七大原則-開放-封閉原則

開閉原則通過新增代碼,避免通過修改原有代碼實現(xiàn)產(chǎn)品迭代
開閉原則要貫穿在軟件開發(fā)的各個層級中,要利用在每一個方法中,由方法組成的類中,由功能密切的類組成的模塊中,由相互依存的模塊組成的項目中。

解決倆個問題:

  1. 新增業(yè)務需要修改原有代碼
  2. 隨著業(yè)務增加,判斷語句的暴增問題
  3. 保持軟件產(chǎn)品的穩(wěn)定性
  4. 不影響原有測試代碼的運行
先寫個工廠接口,預知未來可能的變化,需要生產(chǎn)線方法,如下:

public interface IFactory {
    String prodLine();
}
滿足客戶1的工廠FactoryA實現(xiàn)IFactory,生產(chǎn)產(chǎn)品A,如下:

public class FactoryA implements IFactory{
    @Override
    public String prodLine() {
        return "產(chǎn)品A";
    }
}
對于客戶1中的代碼:

public class Client1 {
    public static void main(String args[]) {
        System.out.println("我訂購并收到產(chǎn)品:"+order());
    }

    private static String order(){
        IFactory factory = new FactoryA();
        return factory.prodLine();
    }
}
客戶1中持有工廠接口IFactory的引用,指向其實現(xiàn)類,
運行之后,可以滿足客戶1的需求:

 我訂購并收到產(chǎn)品:產(chǎn)品A
現(xiàn)在公司需要拓展業(yè)務滿足客戶2的需求,只需添加一個工廠接口IFactory的實現(xiàn)類,生產(chǎn)B產(chǎn)品,如下:

public class FactoryB implements IFactory {

    @Override
    public String prodLine() {
        return "產(chǎn)品B";
    }

}
客戶B中的代碼

public class Client2 {
    public static void main(String args[]) {
        System.out.println("我訂購并收到產(chǎn)品:"+order());
    }

    private static String order(){
        IFactory factory = new FactoryB();
        return factory.prodLine();
    }
}
運行后,可以滿足客戶B的需求


我訂購并收到產(chǎn)品:產(chǎn)品B
這樣相當于公司為每一位客戶,私人訂制了一個工廠,專門生產(chǎn)其所需要的產(chǎn)品,絲毫不受生產(chǎn)其他產(chǎn)品的影響,而且是保密生產(chǎn),客戶2所需的產(chǎn)品B,對于客戶1是不可見的,絕對的客戶利益至上。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前言 關于設計模式六大設計原則的資料網(wǎng)上很多,但感覺很多地方解釋地都太過于籠統(tǒng)化,特此再總結(jié)一波。 優(yōu)化第一步-單...
    ghroost閱讀 1,260評論 0 5
  • 目錄: 設計模式六大原則(1):單一職責原則 設計模式六大原則(2):里氏替換原則 設計模式六大原則(3):依賴倒...
    加油小杜閱讀 798評論 0 1
  • 轉(zhuǎn)載標注聲明:http://www.uml.org.cn/sjms/201211023.asp 目錄:[設計模式六...
    Bloo_m閱讀 799評論 0 7
  • 設計模式六大原則 設計模式六大原則(1):單一職責原則 定義:不要存在多于一個導致類變更的原因。通俗的說,即一個類...
    viva158閱讀 826評論 0 1
  • 1.選擇適合于自己的深度工作法 上個世紀80年代,艾薩克森因個人能力出色被稱作“美國最優(yōu)秀的雜志記者之一”...
    熱帶不憂郁閱讀 277評論 0 2

友情鏈接更多精彩內(nèi)容