在面向服务的体系结构中处理实体类型的多态性和继承时,最小恶路径是什么?
SOA(据我所知)的原则是将实体类作为纯粹的数据结构,缺乏任何业务逻辑。所有业务逻辑都包含在范围狭窄、松耦合的服务中。这意味着服务实现尽可能小,进一步实现了松耦合,并且意味着实体避免了需要了解系统可能对它们执行的每个行为。
在SOA中,使用条件是被接受的常规吗?应该放弃实体类中的继承吗?
更新
我肯定意味着重载而不是覆盖。
我将SOA定义为将系统的行为按用例分组为接口,然后这些接口的逻辑在每个接口的一个类中实现,通常是这样。因此,实体类(例如Product
)变成了仅具有getter和setter的POJO。它绝对不应包含与服务相关的任何业务逻辑,因为那么您将引入一种耦合的焦点,即实体类需要知道可能对其进行的所有业务流程,从而完全抵消了松散耦合SOA的目的。
因此,既然不能在实体类中嵌入业务过程特定的行为,那么就无法使用这些实体类的多态性 - 没有要覆盖的行为。
更新2
上述行为更简单地解释为,在编译时选择一个重载的路径,并在运行时选择一个重写的路径。
如果为每个域模型类的子类型都创建服务实现的子类,那么这是不好的做法,那么人们如何解决编译时重载的问题呢?