2. ? Fa?ade 外觀模式
為子系統(tǒng)中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。
看圖說話:
?
?
??? 此模式的具體體在: MVC 中 service 層中某個 service 對 dao 層的封裝, JDBC 對各個數(shù)據(jù)庫的封裝。
3. ? Proxy 代理模式
為其他對象提供一種代理,以控制對這個對象的訪問。
看圖說話:
?
??? 代理對象中保存被代理對象的引用,在調(diào)用被代理對象過程中可以附加操作。
??? 使用場合:遠程代理;虛擬代理 ( 異步調(diào)用被代理對象的方法 ) ;安全代理;只能指引。不管什么場合都要是要在被代理對象上附加操作。
4. ? Adapter 適配器模式
將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。 Adaper 模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
看圖說話:
?
????? ?? 適配器通過繼承目標對象并隱含被適配者的真正實現(xiàn)來達到目標操作與被適配者
的兼容合作。
5. ? Composite 組合模式
??? ???? 將對象組合成樹形結(jié)構(gòu)以表示“部分—整體”的層次結(jié)構(gòu)。組合模式使得用戶對單
個對象和組合對象的使用具有一致性。
??? 看圖說話:
實例應(yīng)用: JUnit 的 Test 接口中及 TestCase 、 TestSuite 子類的結(jié)構(gòu)即為組合模式。
適用于樹形結(jié)構(gòu),集合結(jié)構(gòu)。
實現(xiàn)方式有兩種:透明方式與安全方式
透明方式:上圖的結(jié)構(gòu)為透明方式,即在 Component 中管理子類對象的增減,問題是 Leaf 不應(yīng)具有增減子類對象的功能。
安全方式:將增減子類的功能放在 Composite 中實現(xiàn)。解決了葉子節(jié)點的問題,但客戶端就要做出相應(yīng)的判斷。
JUnit3.8 使用的是安全方式。
6. ? Decorator 裝飾模式(油漆工模式)
動態(tài)地給一個對象添加一些額外的職責(zé),就增加功能來說,裝飾模式比生成子類更為靈活。
看圖說話:
?
裝飾者可以有自己的狀態(tài)和新的行為,只關(guān)心自己的變化,封裝了具體被裝飾的對象的行為。注意 decorate 方法的使用。
與 Proxy 對比,
A .一般代理模式中被代理對象是不被客戶端知道的,在代理對象初始化時或之前就已初始化好了的。而裝飾模式要知道具體的被裝飾對象及裝飾流程,被裝飾對象是通過 decorate 方法傳遞給裝飾者的。
B .代理對象一般不多,而裝飾者一般較多。
7 . Bridge 橋接模式
????? 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。
?????? ? 看圖說話:
????? A .什么樣的事物適合它的抽象與實現(xiàn)相分離?
????? 注解:
復(fù)雜事物。
那有多復(fù)雜?這里涉及到個數(shù)學(xué)問題
我們假設(shè)看上面的每個抽象與它的實現(xiàn)都有一種組合關(guān)系,且有兩個具體的抽
象,兩個具體的實現(xiàn)。
如果使用 Bridge 模式,那么需要四個類來完成 2+2=4 ,
如果使用繼承的方式實現(xiàn)也需要四個類來完成 2 × 2=4 。
所以可以知道,當(dāng)具體的抽象和具體的實現(xiàn)組合數(shù)大于 4 時,使用橋接模式是
多么節(jié)省資源。
B .抽象與實現(xiàn)分離有什么好處?
注解:
???? 各自任意變化,且可以任意的組合。就像電腦的硬件可以是任意廠商的,軟件
可以是任意人開發(fā)的,但都可以相互組合一樣。
C .具體應(yīng)用的體現(xiàn)。
MVC 的 Service 層和 Dao 層之間可以看作橋接模式的體現(xiàn),之前說過 Service 層
的某個 Service 對 Dao 的封裝可以視為 Fa?ade 模式,那么此時橋接模式就可以看作是
多個 Fa?ade 的集合。
8. ? Flyweight 亨元模式
運用共享技術(shù)有效地支持大量細粒度的對象,避免大量擁有相同內(nèi)容的小類的開銷,使大家共享一個元類。
看圖說話:
?
? A .當(dāng)有當(dāng)量的相似對象存在時,要抽象出相似的部分作為“元類”共享,讓差異
部分可以通過傳參的形式傳入到共享對象的方法中來達到差異操作。
? ?? B .注意關(guān)鍵點是 FlyweightFacory 的實現(xiàn),通過它來達到共享的目的。
??? C .優(yōu)缺點 :
?????? ???? 優(yōu)點: Flyweight 模式是一個提高程序效率和性能的模式 , 會大大加快程
序的運行速度 . 應(yīng)用場合很多
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
