编程语言
首页 > 编程语言> > Java23种设计模式七大原则--开闭原则

Java23种设计模式七大原则--开闭原则

作者:互联网

目录

一.定义:

二.作用: 

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),这就是开闭原则的经典定义。

 

二.作用: 

1.对软件测试的影响

软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常运行。

2.可以提高代码的可复用性

粒度越小,被复用的可能性就越大;在面向对象的程序设计中,根据原子和抽象编程可以提高代码的可复用性。

3.可以提高软件的可维护性

遵守开闭原则的软件,其稳定性高和延续性强,从而易于扩展和维护。

 

三.实现方法:

例子:Windows主题组合实现

“抽象约束,封装变化”,定义一个稳定的抽象类作为一个基类(主题类),该基类包含抽象方法(设置主题方法),子类实现基类的主题方法,最后定义一个最终产品,进行主题的组装。

开闭原则,可以很好的在不改变或者改变极少原有逻辑的条件下进行业务的拓展。

 

四.代码演示

1.基类父类抽象:

package com.zking.design.opc;

/**
 * @description: 开闭原则--基类
 * @author: codinglife
 * @time: 2021/5/6 10:45
 */
public abstract class Subject {
    /**
     * 主题基类抽象接口,具体主题子类继承实现
     * @param
     */
    public abstract void setSubject();
}

2.子类主题实现

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声音");
    }
}

3.最终产品组装类:

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();
    }


}

4.调用测试

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());
    }


}

5.结果

标签:Java23,原则,--,主题,开闭,Windows,基类,设计模式,public
来源: https://blog.csdn.net/Mr_xiayijie/article/details/116449742