腦子不清的總結下看過的設計模式

觀察者模式:http://cmsblogs.com/?p=3346編程

        概述:分爲三個部分,主題:也叫被觀察的對象,  具體主題:是主題的子類,一般封裝着容易發生改變的數據,當他發生改變時就向觀察者發送通知,  觀察者  ,觀察主題發生改變是作出反應  ,  具體觀察者:指向一個具體的引用,裏面主要是存儲觀察者有關的狀態,這些狀態須要與目標狀態保持一致。一個主題能夠有不少個觀察者,屬於一對多的關係,當主題發生改變時,觀察者也會作出相應改變,而且觀察者不依賴主題生存,能夠隨時增刪觀察者的數量,易於擴展(有點像消息中間件中的訂閱模式)中間件

        優勢:沒有明顯的耦合狀態時仍能夠相互交互,主題只知道觀察者這個接口,而不知道觀察者的具體內容    主題會向觀察者發出廣播通知,並具備開閉原則對象

        缺點:當觀察者過多的時候,主題要通知全部的觀察者的時候會花費太多的時間blog

                 當觀察者與主題之間有循環關係是容易形成系統卡死繼承

                 主題不能向觀察者表達具體改變了什麼,只能表達我發生了改變接口

裝飾者模式:http://cmsblogs.com/?p=3349編譯

        歸納:由於繼承是靜態的,在編譯的時候都已經決定了子類的行爲,咱們不便於控制時機,因此咱們就使用關聯,這樣就動態的把責任加到對象身上,裝飾着模式就提供了更加有彈性的工做方案,裝飾着能夠在被裝飾着後面增長本身的行爲,甚至能夠被裝飾者取代從而達到特定的效果,固然這些裝飾着也能夠刪掉不影響程序正常運行擴展

        優勢:使被裝飾者有更加豐富行爲,比繼承更靈活循環

        缺點:若是裝飾着比較多的話就會增長系統的複雜程度,不易整理和;排錯引用

簡單工廠模式:http://cmsblogs.com/?p=3351

        歸納:比較符合Java面向對象的編程思想,傳統編程一旦加入新的接口就要修改代碼,如今咱們只須要調用一個簡單的方法,而後傳進去參數他就會返回相對應的對象(也就是說我建立一個類裏面,裏面封裝須要增長或者修改的對象,我只須要傳進去一個具體的參數他就經過這個參數找到具體的對象並返回)

        優勢:簡單工廠模式實現了責任的分割,提供了類經過特定的參數建立對象,提升靈活性,簡化須要記憶的代碼

        缺點:依賴性過高,一旦工廠類不能工做以後整個業務將會癱瘓

                  增長類的個數提升了代碼的複雜性和理解難度

                  因爲使用了簡單工廠模式,不少對象方法都是靜態的,不利於總體的繼承

相關文章
相關標籤/搜索