<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-95  評論-31  文章-10  trackbacks-0
    條件滿足:
    1 當前對象本身(this)
    2 以參量形式傳入到當前對象方法中的對象
    3 當前對象的實例變量直接引用的對象
    4 當前對象的實例變量如果是一個聚集,那么聚集中的元素也都是朋友
    5 當前對象所創建的對象
    否則就不算"朋友" 代碼需優化重構

    不是“朋友”的例子:
    public class SomeOne
    {
       
    public void operation(Friend friend)
       {
         Stranger stranger 
    = friend.getStranger();
         stranger.operation();
       }
    }

    friend是SomeOne的朋友,但是在operation內部出現了stranger對象,它不是SomeOne的朋友,stranger.operation()方法應該挪到friend對象內部去,進行封裝再對SomeOne提供。
    這原則就是迪米特法則。
    優點:降低系統內部的耦合度,若修改僅僅只會影響到這個類的“朋友”們,而不會影響到當前對象。
    缺點:對象里會產生大量的小方法,這些方法僅僅只是傳遞間接的調用,因此與系統的業務邏輯無關,一個小方法內,可能僅僅只是調用了關聯對象的其它方法,而且會使系統的不同模塊之間不容易協調。

    避免該缺點:使用依賴倒置原則,比如把上面的stranger做為抽象類,stranger.operation()是個抽象方法,通過friend.getStranger()動態返回不同具體的類,這樣仍然做到了SomeOne對象不用修改,要改也只是friend.getStranger()方法內部返回不同的子對象即可,但是為了代碼整潔度,清晰明了,直接一個friend.operation(),感覺還是挪走比較好。

    23種模式里面:門面模式與中介者模式就是迪米特法則的應用
    門面模式示意圖: 顯然Facade依賴各個子系統,子系統可以有多個,客戶端直接與Facade打交道


    中介者模式示意圖:





    posted on 2013-09-24 15:34 朔望魔刃 閱讀(253) 評論(0)  編輯  收藏 所屬分類: 設計模式&&數據結構
    主站蜘蛛池模板: 亚洲国产精品综合久久久| 在线看片无码永久免费视频| 国产又大又粗又硬又长免费 | 美女被羞羞网站免费下载| 无码人妻精品一二三区免费 | 国产成人精品日本亚洲专一区| 最近免费中文字幕mv在线电影| 水蜜桃亚洲一二三四在线| 久久免费福利视频| 亚洲av伊人久久综合密臀性色 | 亚洲国产天堂久久综合网站| 99爱视频99爱在线观看免费| 亚洲综合免费视频| 国产成人精品免费视频大| 亚洲精彩视频在线观看| 在线观看日本免费a∨视频| 亚洲乱码国产乱码精华| 免费大香伊蕉在人线国产| 在线观看免费国产视频| 欧美日韩亚洲精品| 亚洲欧洲日产国码一级毛片| 日本三级在线观看免费| 在线免费观看亚洲| 国产成人免费爽爽爽视频| 亚洲aⅴ无码专区在线观看春色| 免费国产小视频在线观看| 羞羞视频在线观看免费| 成人在线视频免费| xxxxx做受大片在线观看免费| 亚洲国产日韩在线视频| 无码国产精品一区二区免费式影视 | 久久精品7亚洲午夜a| 美丽的姑娘免费观看在线播放 | 亚洲日韩乱码中文无码蜜桃 | 国产亚洲精品bv在线观看| 免费观看午夜在线欧差毛片| 182tv免费视频在线观看| 亚洲免费中文字幕| 亚洲精品国产福利一二区| 最近中文字幕大全免费视频| 亚洲av纯肉无码精品动漫|