面向物件設計之開放-封閉原則(Open
阿新 • • 發佈:2018-12-15
開放-封閉原則:
對擴充套件開放,對修改關閉,既軟體實體應儘量在不修改原始碼的情況下進行擴充套件 。
好處:
- 高內聚,低耦合。
- 降低了各程式之間的耦合性,抽象化設計是開閉原則的關鍵。
- 適應性、靈活性、穩定性比較好。增加新功能時,只需要在原有基礎上增加新的模組就能實現新功能。增加的新模組對原有模組沒影響或者影響很小。
例項:
圖表演示系統,演示各種圖,新增新圖
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()); //新增新圖
}
}