三哥們都是結構型模式,長得又有點像,爲了深入區分,寫文祭奠一下。安全
代理模式:.net
適配器模式:代理
門面模式(外觀模式):對象
代理模式: 水滸街,西門慶看上潘金蓮,想和她嘿咻嘿咻,可是本身有不能去找潘金蓮去說,因而他找到了金牌代理人王婆,王婆就去找潘金蓮,通過一番商談,潘金蓮終於答應了西門慶的請求。 繼承
適配器模式: 水滸街,西門慶看上潘金蓮,想和她嘿咻嘿咻,因而就去潘金蓮家,可是潘金蓮不在,因而就給王婆穿上潘金蓮的衣服,帶上面具,假扮成潘金蓮,和西門慶嘿咻嘿咻了……(有點噁心啊) 接口
門面模式(外觀模式): 水滸街,西門慶想去怡紅院嘿咻嘿咻,因而他選好了姑娘,調好了門房,嘿咻以後交完了錢,由退了房。如今怡紅院推出門面套餐,只要選門面套餐,就自動選好了最好的房子,最好的姑娘,連房租均可以自動記載帳上,西門慶只要嘿咻就能夠了。開發
代理模式:優勢是協調調用與被調用,實現部分解耦,代理模式能保護對真實對象的訪問,代理遠程機器可使得遠程機器能無阻礙協調地處理客服端請求。缺點是增長代理層調用流程複雜,可能出錯,同時速度可能變慢。 用例子說明是:優勢將西門慶與潘金蓮隔離開來,保護了潘金蓮的名聲,同時使西門慶與潘金蓮交流順暢。缺點是多了王婆這一層,傳達交流可能會出錯,同時要確定會延遲兩人的交流。 get
適配器模式:優勢是將目標類與適配者類解耦,增長了類的透明性,靈活性擴展性好。缺點是在Java等語言中,不支持多繼承,因此類適配器只能適配一個,而對象適配器想置換適配類的方法就不容易。 用例子來講:優勢是西門慶知道那是王婆假扮的,並且他能隨時讓王婆假扮成其餘人,靈活性好。缺點是在Java中,類適配器中王婆只能假扮一個姑娘,而對象適配器中王婆假扮的姑娘取樂方式只有嘿咻嘿咻。 權限控制
門面模式(外觀模式):優勢是鬆散耦合,被調模塊更容易擴展和維護。簡單易用,節省了調用者的處理流程,更好的劃分了訪問層次,並且用戶不知道內部實現,還提升了安全性。缺點是不符合開閉原則,若是要新增功能,繼承複用都沒有用,只能修改門面模塊代碼。 用例子來講:優勢是西門慶叫姑娘時簡單容易,並且選姑娘、選房子、記帳能夠統籌規劃,專門找人負責,各人之間互不相關,西門慶也不知道門面套餐內部機制,怡紅院也掙錢也更隱蔽。缺點是有新的流程,都必須修改門面套餐。擴展
代理模式:能夠用於遠程訪問,虛擬代理,以及權限控制,智過能引用代理等。
適配器模式:當系統的數據與行爲都正確,可是接口不符合是,能夠通適配達到協調
門面模式:開發時經過門面模式能夠隱藏複雜的實現步驟,維護舊系統的時候,能夠封裝遺留代碼,提供清晰藉口。