如果对象暴露出高级别,则处理过的'信息或低级别原始数据'?

时间:2016-04-21 06:51:51

标签: design-principles

有与之相关的设计原则吗?以下是我目前所知的两种方法:

方法1:

曝光'更高级别','已处理'消费者可以随时使用的信息。

abstract class Vehicle
{
  bool IsMoving();
}

这样做的缺点似乎是你有一个单一的信息来源可能会最终为不同的消费者群体提供服务,这些消费者可能需要对正在移动的东西采取略微不同的看法。装置

例如,一个消费者可能会考虑移动'除了速度为零之外的其他任何事情(让我们忽略浮点问题!) - 而另一个消费者认为移动'速度超过1米/秒。

方法2:

暴露' raw'消费者可以用来做出自己的决定然后再使用的数据。

abstract class Vehicle
{
  double GetSpeed();
}

这里的缺点是你可能(读:将会)以重复代码的很多结束(因为许多消费者可能对什么'移动'有相同的定义。 )。我想,解决方案是有一个单独的(适配器?)层,这些类型的决策/处理会发生 - 但我想正确地阅读这个。

我试图避免提出一个主观的,讨论式的问题,所以我不会问哪个更好 - 我想知道是否有关于这个主题的一些理论我可以去读一读。谢谢!

0 个答案:

没有答案