版权声明:LemonSnm https://blog.csdn.net/LemonSnm/article/details/83047167
开放-封闭原则:
对扩展开放,对修改关闭,既软件实体应尽量在不修改原代码的情况下进行扩展 。
好处:
- 高内聚,低耦合。
- 降低了各程序之间的耦合性,抽象化设计是开闭原则的关键。
- 适应性、灵活性、稳定性比较好。增加新功能时,只需要在原有基础上增加新的模块就能实现新功能。增加的新模块对原有模块没影响或者影响很小。
实例:
图表演示系统,演示各种图,添加新图
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()); //添加新图
}
}