目录
一.定义:
二.作用:
1.对软件测试的影响
2.可以提高代码的可复用性
3.可以提高软件的可维护性
三.实现方法:
四.代码演示
1.基类父类抽象:
2.子类主题实现
3.最终产品组装类:
4.调用测试
5.结果
开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:
软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification),这就是开闭原则的经典定义。
软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常运行。
粒度越小,被复用的可能性就越大;在面向对象的程序设计中,根据原子和抽象编程可以提高代码的可复用性。
遵守开闭原则的软件,其稳定性高和延续性强,从而易于扩展和维护。
例子:Windows主题组合实现
“抽象约束,封装变化”,定义一个稳定的抽象类作为一个基类(主题类),该基类包含抽象方法(设置主题方法),子类实现基类的主题方法,最后定义一个最终产品,进行主题的组装。
开闭原则,可以很好的在不改变或者改变极少原有逻辑的条件下进行业务的拓展。
package com.zking.design.opc; /** * @description: 开闭原则--基类 * @author: codinglife * @time: 2021/5/6 10:45 */ public abstract class Subject { /** * 主题基类抽象接口,具体主题子类继承实现 * @param */ public abstract void setSubject(); }
package com.zking.design.opc; /** * @description: 开闭原则--Windows颜色 * @author: codinglife * @time: 2021/5/6 10:35 */ public class WindowsColorSubject extends Subject{ @Override public void setSubject() { System.out.println("我是Windows颜色"); } }
package com.zking.design.opc; /** * @description:开闭原则--Windows声音 * @author: codinglife * @time: 2021/5/6 10:51 */ public class WindowsVoiceSubject extends Subject{ @Override public void setSubject() { System.out.println("我是Windows声音"); } }
package com.zking.design.opc; /** * @description: 开闭原则--Windows产品组装类 * @author: codinglife * @time: 2021/5/6 10:33 */ public class WindowsSubject { /** * Windows主题接口 * @param s 抽象基类对象 */ public void subject(Subject s){ s.setSubject(); } }
package com.zking.design.opc; /** * @description: * @author: codinglife * @time: 2021/5/6 10:54 */ public class SubjectMain { public static void main(String[] args) { WindowsSubject windowsSubject= new WindowsSubject(); //Windows颜色 windowsSubject.subject(new WindowsColorSubject()); //Windows声音 windowsSubject.subject(new WindowsVoiceSubject()); } }