1前言
开闭原则是java里最基本的设计原则,是其他设计原则基础,其余设计原则更像具体实现。
开闭原则指导我们如何设计一个系统。
开闭原则定义:一个软件实体类,模块,函数应对扩展开放,对修改关闭。
2实现
2.1 一个实现类不满足新功能,现需扩展功能,有三种实现方式
1 修改实现类,修改实现方法,但会影响原有功能
2 修改接口 ,新增方法,但 实现类也需要改,调用实现类也需修改,故不采用。
3 扩展修改,新增一个子类继承实现类,重写不满足新功能方法。高层次模块也需做出改动。
注意:开闭原则对修改关闭,并不代表不能修改
2.2 三种变化
1 逻辑变化 ,只变化一个逻辑,不影响其它模块 ,比如元转分,之前进一位,现在变成舍一位
2 模块变化 ,子模块发生变化,需要其它高级模块
3 显示变化,如列表展示新增字段,如这个需查询多个表,非常复杂,也可以使用扩展实现,但需要看原有设计是否灵活。
2.3 为什么使用开闭原则
开闭原则是最基础的原则,其它原则是开闭原则具体实现,其它原则是设计的方法和工具,开闭原则是基石。
1 更利于单元测试 ,开闭原则对扩展开放,我们只需对扩展进行单元测试。
2 提高复用性 ,把代码逻辑单元拆分到非常小
3 提高可维护性 ,不需要对原有代码进行修改,只需扩展即可
4 面向对象开发
2.4 如何使用开闭原则
开闭原则非常虚,单一职责原则,里式替换原则,迪米特法则,依赖倒置原则,接口隔离原则是对开闭原则的解释。
1 抽象控制
2 封装变化
3 总结
设计原则不可生搬硬套到项目中,如小型项目无需使用,中大型项目需要约束规约,可选用适合的设计模式。
软件设计最大的难题是应对需求的变化,但需求的变化又是不可预料的,我们要为不可预料的事做准备,本就是非常复杂的事情。这时候我们可以使用大师总结出的设计模式与设计原则来帮我们封装变化。