打开/关闭原则指出“应打开软件实体(类,模块,功能等)进行扩展,而关闭以进行修改”。

假设我有一个旧的域类,并且要求在域类中添加一个新字段,因此它违反了OOP的“打开/关闭”原理。如果是这样,我们如何在不违反开放/关闭原则的情况下达到这一要求?

最佳答案

开放/封闭原则应为“开放以扩展,封闭为修改”。

想法是设计系统,以便维护人员可以通过添加新类(通常是子类化或实现接口)来添加功能,而不必修改现有类。

在您的方案中,如果您需要通过添加字段来修改域类,那么这就是违反开放式/封闭式原理的设计的一个很好的例子。

如果您可以通过添加新类(也许扩展域类或扩展某些接口)来满足要求,则该域类的设计应符合“开放/封闭原则”。是否可以这样做取决于域类是否为此目的而设计。

如果仍然需要修改域类,则可以考虑重构域类,以便将来可以通过添加类而不是再次修改域类来进行更改。

08-28 19:04