SofeWare entities (classes,modules,function,etc.) should be open forextension but closed for modification.
1如果一个功能的改动会级联式的引发其他模块的改动,则不符合开闭原则。反之如果可以仅通过增加代码而不是修改代码来实现功能的迭代,扩展则该程序符合开闭原则。
2如何实现在不改动原代码的情况下扩展新的功能呢?答案就是抽象,如下图,如果两个类都是具体的类,当客户想换一个服务对象的时候,就不得不改动Client类。
正确是实现方式应该是根据在客户类和服务类之间加一个接口,利用策略模式来实现服务类的替换,客户要更换新的服务类时,只需要创建一个新的服务类继承服务接口,而客户类则可以不用改动代码

图1
、
图2 遵循开闭原则的设计
同时遵循开闭原则的设计模式除了策略模式还有模板方法模式
开闭原则与设计模式
本文探讨了软件设计中的开闭原则,即软件实体应当对扩展开放,对修改关闭。文章详细解释了如何通过抽象和策略模式等设计模式,在不改变现有代码的基础上添加新功能,以实现系统的灵活性和稳定性。
757

被折叠的 条评论
为什么被折叠?



