我的理解:代理
子類繼承外觀類的全部屬性方法,客戶端只須要跟外觀類進行交流,實現了對全部子類的封裝。對象
沒有使用外觀類繼承
如圖:get
應用外觀類class
如圖:擴展
我的理解:引用
代理模式是將原類進行封裝,客戶端只須要與代理進行交流。代理就是原類的一個替身。簡而言之就是用一個對象表明另一個對象。強調的是個體。方法
定義一箇中介對象來封裝系列對象之間的交互。中介者使各個對象不須要顯示地相互引用,從而使其耦合性鬆散,並且能夠獨立地改變他們之間的交互im
使用中介者模式的場合通信
1.一組定義良好的對象,如今要進行復雜的通訊。
2.定製一個分佈在多個類中的行爲,而又不想生成太多的子類。
能夠看出,中介對象主要是用來封裝行爲的,行爲的參與者就是那些對象,可是經過中介者,這些對象不用相互知道。
使用中介者模式的優勢:
1.下降了系統對象之間的耦合性,使得對象易於獨立的被複用。
2.提升系統的靈活性,使得系統易於擴展和維護。
使用中介者模式的缺點:
中介者模式的缺點是顯而易見的,由於這個「中介「承擔了較多的責任,因此一旦這個中介對象出現了問題,那麼整個系統就會受到重大的影響。
三者的區別與聯繫
1,中介者模式:A,B之間的對話經過C來傳達。A,B能夠互相不認識(減小了A和B對象間的耦合)
2,代理模式:A要送B禮物,A,B互相不認識,那麼A能夠找C來幫它實現送禮物的願望(封裝了A對象)
3,外觀模式:A和B都要實現送花,送巧克力的方法,那麼我能夠經過一個抽象類C實現送花送巧克力的方法(A和B都繼承C)。(封裝了A,B子類)
代理模式和外觀者模式這兩種模式主要不一樣就是代理模式針對的是單個對象,而外觀模式針對的是全部子類。