如何拥有一个遵循开放封闭原则的行为丰富的域实体?

Byr*_*ahl 6 design-patterns domain-driven-design open-closed-principle

开闭原则规定:

软件实体(类,模块,函数等)应该是可以扩展的,但是关闭以进行修改

我正在设计一个域名,并在我的域名实体中包含相当多的行为.我正在使用域事件并将依赖注入到方法中,因此请确保我的实体不会与外部影响耦合.但是,对我而言,如果客户端稍后需要更多功能,我将不得不违反OCP并破解这些域实体以添加功能.一个行为丰富的领域实体如何与开放封闭原则协调一致?

cas*_*nca 5

在设计类时牢记开闭原则 (OCP) 很有用,但立即使类“关闭以进行修改”并不总是实用或可取的。我认为单一职责原则 (SRP) 在实践中更有用——只要一个类只做一件事,如果那一件事的要求发生变化,就可以修改它。

此外,随着时间的推移,SRP 会导致 OCP;如果您发现自己经常更改一个类,您最终会对其进行重构,以便将更改部分隔离在一个单独的类中,从而使原始类更加封闭。