設計模式初探(2)開閉原則

開閉原則

軟件實體(類、模塊、函數(shù)等等)應該是可以擴展的,但是不可以修改。

開閉原則為我們描繪出了一個美好的代碼世界。在這里,我們無需去修改原有的代碼。只需要不斷的新增模塊就能完成功能的增加和修改。(想想還有些小激動呢?。。?/p>

那么該如何去做呢?

開閉原則的做法與搭積木相似。將功能劃分成若干個不會再分割的小模塊,通過對這些小模塊的排列組合,我們就可以拼裝出無限的可能。

所以,首先要去做的就是對功能進行劃分。具體做法可以參見我的上一篇文章設計模式初探(1)。

然后就是如何讓這些模塊可以自由組合拼裝。

舉一個生活中的例子。我們都在使用各種不同的電器。在切換電器的時候,只需做一個簡單的插拔操作,不需要自己去更改電路。對于整個供電系統(tǒng),根據(jù)變化的原因可以劃分成2個部分:電源相關部分、用電器相關部分。
它們之間的拼接是通過定義一個接口,插座。電源和用電器各自實現(xiàn)自己的接口,這樣任何一處電源和任何一個用電器都可以無縫對接。

回到程序上來~

電路

class Circuit {
    contructor (_power, _applicant) {
        _applicant.use(_power.generate());
    }
}

電源

class Power {
    //發(fā)電
    generate () {
    
    }
}

用電器

class Applicant {

    //用電
    use () {
    
    }
}

用電器連接電路

    var _power = new XxxPower();//XxxPower為Power的某個子類,實現(xiàn)generate方法

    var _applicant = new XxxApplicant();//XxxApplicant為Applicant某個子類,實現(xiàn)use方法。

    var _circuit = new Circuit(_power, _applicant);//一個電路就這樣連好了

對于上一篇文章設計模式初探(1)中提到的例子,我在這里嘗試著拼裝一下。

    class Card {
        contructor (_position, _data) {
            //生成列表
            this._renderList(_data.getList());
            //設置按鈕
            this._setBtnText(_data.getBtnText());
            //定位模塊
            this._setCardPosition(_position.getCardPosition());
            //定位三角
            this._setTrianglePosition(_position.getTrianglePosition());
        }
    }

    class Data {
        //獲取列表數(shù)據(jù)
        getList () {

        }
        //獲取按鈕文案
        getBtnText () {

        }
    }

    class Position {
        //卡片的位置
        getCardPosition () {

        }

        //三角的位置
        getTrianglePosition () {

        }
    }

    //歷史記錄數(shù)據(jù)
    var _data = new HistoryData();

    //居左的位置
    var _position = new LeftPosition();

    //一直新的卡片對象
    var _card = new Card(_position, _data);

大概就是這個意思啦,以上。

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

相關閱讀更多精彩內容

  • 設計模式之六大原則(轉載) 關于設計模式的六大設計原則的資料網(wǎng)上很多...
    霄霄霄霄閱讀 943評論 0 1
  • 前言 設計模式六大原則網(wǎng)上資料比較多比較亂,本文將網(wǎng)上的一些好的資料做一下整理,以便隨時翻閱。友情提示,設計模式雖...
    簡單的土豆閱讀 1,509評論 0 10
  • 改變命運 ——《命運之路》讀后感 吳楊彬 一看到題目“命運之路”就被吸引住了,命運畢竟是一個虛幻...
    簡約語文閱讀 775評論 0 1
  • “我喜歡成熟的男生 大概因為我感冒能帶我去醫(yī)院照顧我 我肚子餓他能二話不說帶我去吃飯 他能給我十足的安全感 他能有...
    素未染閱讀 97評論 0 1

友情鏈接更多精彩內容