在DDD问题中,“在你的班级中使用getters/setters是邪恶的”的原因是getter和setters通常不会代表你的UL(无处不在的语言)并导致贫血症实体。但是如果你的UL有类似“我需要那条线”的东西,那么你可以创建一个getter,但是按照UL来命名,如:invoice.lineAmount(lineId)
。
在方法内部,您可以简单地访问属性,就像CharlesNRice已经回答的那样。如果您觉得您需要对阅读/设置行进行特殊处理,则可以创建私有getter以在域逻辑方法中使用它。
UPDATE:
getter和被需要摆在首位制定者,因为在后面的项目,你可能已经想添加一些额外的验证/设置/获取属性转换之前,没有它,你将有找到正在访问属性并改变它的每一段代码。有了getter/setter,你可以在一个地方访问属性,所以你可以在一个地方更改代码 - 维护起来更容易。但是由于在DDD中你只能使用域逻辑方法,所以你不能直接在给定实体外的任何地方访问你的属性,所以你也不必使用getter和setter。你的域名方法如invoice.lineAmount(lineId)
实际上就像getters一样工作,但它们与UL一起工作,所以它们都可以。如果你看到你在实体类的少数地方获得了财产,你会考虑创建真正的内部使用的getter/setter。
而downvote是为了? – Apocatastasis 2014-09-10 19:17:13
刚刚阅读你的问题你看看这MSDN指南集合http://msdn.microsoft.com/en-us/library/dn169389(v=vs.110).aspx – MethodMan 2014-09-10 19:19:16
好吧,我刚刚读过它。我不会将我的收藏展示给外部世界,所以除了命名约定之外,我不明白你的观点。 – Apocatastasis 2014-09-10 19:29:56