ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-05-06 14:34:40  阅读:178  来源: 互联网

标签:Java23 原则 -- 主题 开闭 Windows 基类 设计模式 public


目录

一.定义:

二.作用: 

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有