我想知道面向类DDD的最佳实践。
由于我在名为ChangeX(字符串x)的自定义setter中进行域验证,因此我可能会将其用作属性。
public virtual string example {get; 私人集; }
但是,这不是很好,因为它禁止我使用对象初始化功能,例如:
new Object {Example =“some example” }
所以我为什么不将自定义集传递给属性集呢?像这样
public virtual string示例{get { 返回示例; } set { ChangeExample(值); }}
这会导致任何问题吗?这是违反最佳做法的吗?
感谢。
答案 0 :(得分:2)
这里的真正问题是使用setter。你为什么需要它们?
当您使用setter时,您将失去隔离 - 您可以从外部修改对象的状态,而不知道它们。这导致了程序代码。
相比之下 - 你应该让对象做某事(而不仅仅是修改他们的状态),最终可能导致他们改变自己的状态。
答案 1 :(得分:0)
我认为这个解决方案很好。设置setter的一个原因是确保您的underlay字段永远不会包含不正确的值。