滿店香的家

          學(xué)習(xí)+實踐=進(jìn)步

          復(fù)習(xí) 接口隔離原則

           

          一、ISP簡介(ISP--Interface Segregation Principle):
          使用多個專門的接口比使用單一的總接口要好。
          一個類對另外一個類的依賴性應(yīng)當(dāng)是建立在最小的接口上的。
          一個接口代表一個角色,不應(yīng)當(dāng)將不同的角色都交給一個接口。沒有關(guān)系的接口合并在一起,形成一個臃腫的大接口,這是對角色和接口的污染。
           
          “不應(yīng)該強迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層次結(jié)構(gòu)。”這個說得很明白了,再通俗點說,不要強迫客戶使用它們不用的方法,如果強迫用戶使用它們不使用的方法,那么這些客戶就會面臨由于這些不使用的方法的改變所帶來的改變。
           
          二、舉例說明:
          參考下圖的設(shè)計,在這個設(shè)計里,取款、存款、轉(zhuǎn)帳都使用一個通用界面接口,也就是說,每一個類都被強迫依賴了另兩個類的接口方法,那么每個類有可能因為另外兩個類的方法(跟自己無關(guān))而被影響。拿取款來說,它根本不關(guān)心“存款操作”和“轉(zhuǎn)帳操作”,可是它卻要受到這兩個方法的變化的影響。

          那么我們該如何解決這個問題呢?參考下圖的設(shè)計,為每個類都單獨設(shè)計專門的操作接口,使得它們只依賴于它們關(guān)系的方法,這樣就不會互相影了!

          三、實現(xiàn)方法:

          1、使用委托分離接口
          2、使用多重繼承分離接口

          posted on 2008-05-19 01:24 滿店香 閱讀(249) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 嘉荫县| 安远县| 光山县| 同心县| 轮台县| 汝城县| 银川市| 成武县| 邢台市| 和龙市| 甘洛县| 舟曲县| 张家港市| 长汀县| 东宁县| 中山市| 马尔康县| 西充县| 莱西市| 天镇县| 嵊泗县| 额尔古纳市| 内黄县| 东乌珠穆沁旗| 额济纳旗| 隆德县| 瑞金市| 九龙城区| 康定县| 饶河县| 南溪县| 襄垣县| 卫辉市| 铜梁县| 普兰店市| 清新县| 蓝田县| 福贡县| 朝阳县| 闽清县| 遂溪县|