1. 程式人生 > >面向物件設計之開放-封閉原則(Open

面向物件設計之開放-封閉原則(Open

開放-封閉原則:

對擴充套件開放,對修改關閉,既軟體實體應儘量在不修改原始碼的情況下進行擴充套件 。

 好處:

  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()); //新增新圖
    }
}