开闭原则(OCP)

定义:
Software entities like classes,modules,functions should be open for extension but closed for modifications
一个软件实体如:类,模块和函数应该对扩展开放,对修改封闭

应该通过扩展来实现变化,而不是直接对其进行修改

关注于功能变化修改的原则

变化分类:
1.逻辑变化
如a + b换成a * b,不涉及其他模块在所有依赖都是相同逻辑处理的情况下可以直接修改方法代码完成

2.子模块变化
一个子模块变化必然会导致其他模块变化,可以通过增加扩展新的子类等方式完成修改,而不是改代码

3.可见视图变化
界面等外部可视部分的变化,一般前端变化可能会导致后端系列连锁反应,取决于原有系统设计是否灵活,复杂情况下也可以通过扩展来完成变更

好处:
1.方便测试
2.提高复用性
3.提高可维护性
4.方便扩展

设计建议:

1.抽象约束
通过接口或抽象类可以约束一组可能变化的行为,并且能够实现对扩展开放

(1)通过接口或抽线类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类的public方法
(2)参数类型,引用对象尽量使用接口或抽象类,而不是实现类
(3)抽象层尽量保持稳定,一旦确定即不允许修改

2.元数据控制模块行为
3.制定项目章程
4.封装变化

(1)将相同变化封装到一个接口或者抽象类中,不同的变化封装到不同的抽象类中
(2).不应该两个不同的变化出现在同一个接口或抽象类中,找到预计可能有变化的点创建稳定的接口,封装可能的变化。

更新时间:2020-01-20 22:00:33

本文由 寻非 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://www.zhouning.group/archives/开闭原则ocp
最后更新:2020-01-20 22:00:33

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×