在 OO 的上下文中,您要了解的最重要的事情是对象响应消息,特别是在 OO P中,方法是这些响应的实现方式。
例如,假设您有一个Person
对象,您(作为程序员)已将责任分配给该对象以响应“增长”消息。通常,您会将其实现为一种Person.grow()
方法,就像这样。
class Person {
int age;
public void grow() { this.age++; }
}
这似乎相当明显,但您必须注意,从消息发送者的角度来看,Person
对象的反应是没有意义的。无论如何,该方法Person.grow()
可能会触发导弹发射,这并不重要,因为其他一些对象(或多个对象)可能会以正确的方式响应(例如,在屏幕上更新自身的 UI 组件)。但是,您决定当Person
对象处理“增长”消息时,它必须增加其年龄属性的值。这是封装。
因此,为了解决您的问题,“执行特定于服务需求的逻辑的公共方法,可能仅由该服务的需求引入 - 看起来也很糟糕”,这一点也不坏,因为您正在设计实体以响应以特定方式来自服务的消息,以匹配您的应用程序的要求。要记住的重要一点是,服务并不决定实体的行为方式,而是实体以自己的方式响应来自服务的请求。
最后,您可能会问自己:实体如何知道他们需要响应某些消息?这很容易回答:您决定如何将消息链接到响应。换句话说,您考虑应用程序的要求(各种对象将发送哪些“消息”)以及如何满足它们(如何以及哪些对象将响应消息)。