持久性无知是单责任原则的应用,这实际上意味着域对象(DO)不应该包含与持久性相关的代码,而应该只包含域逻辑。
a)我认为这意味着联系较低层(即持久层)的代码位于业务逻辑层的其他类(OC)中的域模型之外?
B)如果我的假设下一个)是正确的,那么DO,说Customer
,从来没有包含的方法如GetCustomers
或GetCustomerByID
?
c)如果我在a)和b)下的假设是正确的,并且假设Customer
域对象对其属性的某些属性使用了延迟加载,则在某个时候Customer
,内部逻辑必须联系OC,而OC则会检索延迟的数据。但是,如果Customer
需要联系OC来接收延迟的数据,那么我们真的不能说域对象不包含与持久性相关的逻辑吗?
谢谢
回复jkohlhepp
1)我假设OrderProvider
并且CustomerProvider
类包含在业务逻辑层中?
2)我从您的答复中得知,b)下的假设是正确的?
3)
...我将检查是否填充了一些私人订单字段或该字段是否为空。如果为空...
但是据我所知,只要域代码需要检查是否order
填充了私有字段,如果没有,请联系OrderProvider,我们已经违反了PI原则?