面向对象设计之开放-封闭原则(Open - Colosed Principle)

版权声明:LemonSnm https://blog.csdn.net/LemonSnm/article/details/83047167

开放-封闭原则:

对扩展开放,对修改关闭,既软件实体应尽量在不修改原代码的情况下进行扩展 。

 好处:

  1. 高内聚,低耦合。
  2. 降低了各程序之间的耦合性,抽象化设计是开闭原则的关键。
  3. 适应性、灵活性、稳定性比较好。增加新功能时,只需要在原有基础上增加新的模块就能实现新功能。增加的新模块对原有模块没影响或者影响很小。

 实例:

图表演示系统,演示各种图,添加新图  

UML:

 柱状图:

package com.szxy.LemonSnm;

public class BarChart extends  BaseChart{
    public void display(){
        System.out.println("This is Bar Chart");
    }
}

饼状图:

package com.szxy.LemonSnm;

public class PieChart extends  BaseChart{
    public void display(){
        System.out.println("This is Pie Chart");
    }
}

添加新图: 

package com.szxy.LemonSnm;

public class NewChart extends  BaseChart{
    public void display(){
        System.out.println("This is New Chart");
    }
}

 管理器显示图表:

package com.szxy.LemonSnm;

public class ChartDisplayManager {
    public void display(BaseChart baseChart){
                 baseChart.display();
               }
    }

抽象图: 

package com.szxy.LemonSnm;

public  abstract class BaseChart {
    public abstract void display();
}

 客户端测试:

package com.szxy.LemonSnm;

public class Main {

    public static void main(String[] args) {

        System.out.println("this is OCP method");
        ChartDisplayManager chartDisplayManager = new ChartDisplayManager();
        chartDisplayManager.display(new BarChart()); //柱状图
        chartDisplayManager.display(new PieChart()); //饼状图
        chartDisplayManager.display(new NewChart()); //添加新图
    }
}

猜你喜欢

转载自blog.csdn.net/LemonSnm/article/details/83047167