目錄
一、代理模式
二、適配器模式
三、橋接模式
四、裝飾模式
五、外觀模式
六、享元模式
七、組合模式
一、代理模式
概念:
代理模式是為其他對(duì)象提供一種以代理控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。
優(yōu)點(diǎn):
(1)職責(zé)清晰
真實(shí)的角色就是實(shí)現(xiàn)實(shí)際的業(yè)務(wù)邏,不用關(guān)心其他非本職責(zé)的事務(wù),通過后期的代理完成一件完成事務(wù),附帶的結(jié)果就是編程簡(jiǎn)潔清晰。
(2)代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用,這樣起到了中介的作用和保護(hù)了目標(biāo)對(duì)象的作用。
(3)高擴(kuò)展性。
二、適配器模式
概念:
適配器模式是將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 ?
優(yōu)點(diǎn):
(1)代理模式能將代理對(duì)象與真實(shí)被調(diào)用的目標(biāo)對(duì)象分離。
(2)一定程度上降低了系統(tǒng)的耦合度,擴(kuò)展性好。
(3)可以起到保護(hù)目標(biāo)對(duì)象的作用。
(4)可以對(duì)目標(biāo)對(duì)象的功能增強(qiáng)。
三、橋接模式
概念:
橋接模式是將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。它是一種對(duì)象結(jié)構(gòu)型模式,又稱為柄體模式或接口模式。它很好的支持了開閉原則和組合鋸和復(fù)用原則。實(shí)現(xiàn)系統(tǒng)可能有多角度分類,每一種分類都有可能變化,那么就把這些多角度分離出來讓他們獨(dú)立變化,減少他們之間的耦合。將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立地變化。
優(yōu)點(diǎn):
(1)抽象和實(shí)現(xiàn)的分離。
(2)優(yōu)秀的擴(kuò)展能力。
(3)實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶透明。
四、裝飾模式
概念:
裝飾模式指的是在不必改變?cè)愇募褪褂美^承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對(duì)象的功能。它是通過創(chuàng)建一個(gè)包裝對(duì)象,也就是裝飾來包裹真實(shí)的對(duì)象。裝飾模式把復(fù)雜類中的核心職責(zé)和裝飾功能區(qū)分開了,這樣既簡(jiǎn)化了復(fù)雜類,有去除了相關(guān)類中重復(fù)的裝飾邏輯。 裝飾模式?jīng)]有通過繼承原有類來擴(kuò)展功能,但卻達(dá)到了一樣的目的,而且比繼承更加靈活,所以可以說裝飾模式是繼承關(guān)系的一種替代方案。
優(yōu)點(diǎn):
(1) 裝飾對(duì)象和真實(shí)對(duì)象有相同的接口。這樣客戶端對(duì)象就能以和真實(shí)對(duì)象相同的方式和裝飾對(duì)象交互。
(2) 裝飾對(duì)象接受所有來自客戶端的請(qǐng)求。它把這些請(qǐng)求轉(zhuǎn)發(fā)給真實(shí)的對(duì)象。
(3) 裝飾對(duì)象可以在轉(zhuǎn)發(fā)這些請(qǐng)求以前或以后增加一些附加功能。這樣就確保了在運(yùn)行時(shí),不用修改給定對(duì)象的結(jié)構(gòu)就可以在外部增加附加的功能
五、外觀模式
概念:
外觀模式,又名過程模式。學(xué)校課程評(píng)價(jià)模式之。外觀類為子系統(tǒng)提供一個(gè)共同的對(duì)外接口,客戶對(duì)象通過一個(gè)外觀接口讀寫子系統(tǒng)中各接口的數(shù)據(jù)資源。外觀模式中,客戶對(duì)各個(gè)具體的子系統(tǒng)是不了解的,所以對(duì)這些子系統(tǒng)進(jìn)行了封裝,對(duì)外只提供了用戶所明白的單一而簡(jiǎn)單的接口,用戶直接使用這個(gè)接口就可以完成操作,而不用去理睬具體的過程,而且子系統(tǒng)的變化不會(huì)影響到用戶,這樣就做到了信息隱蔽。
優(yōu)點(diǎn):
(1)降低了子系統(tǒng)與客戶端之間的耦合度,使得子系統(tǒng)的變化不會(huì)影響調(diào)用它的客戶類,便于子系統(tǒng)內(nèi)部維護(hù)和擴(kuò)展。
(2)對(duì)客戶屏蔽了子系統(tǒng)組件,減少了客戶處理的對(duì)象數(shù)目,并使得子系統(tǒng)使用起來更加容易,降低了復(fù)雜性。
?(3)降低了大型軟件系統(tǒng)中的編譯依賴性,簡(jiǎn)化了系統(tǒng)在不同平臺(tái)之間的移植過程,因此編譯一個(gè)子系統(tǒng)不會(huì)影響其他子系統(tǒng),也不會(huì)影響外觀對(duì)象。
六、享元模式
概念:
享元模式它使用共享物件,用來盡可能減少內(nèi)存使用量以及分享資訊給盡可能多的相似物件;它適合用于只是因重復(fù)而導(dǎo)致使用無法令人接受的大量?jī)?nèi)存的大量物件。通常物件中的部分狀態(tài)是可以分享。常見做法是把它們放在外部數(shù)據(jù)結(jié)構(gòu),當(dāng)需要使用時(shí)再將它們傳遞給享元。
優(yōu)點(diǎn):
(1)相同對(duì)象只要保存一份,這降低了系統(tǒng)中對(duì)象的數(shù)量,從而降低了系統(tǒng)中細(xì)粒度對(duì)象給內(nèi)存帶來的壓力。
七、組合模式
概念:
組合模式將對(duì)象組合成樹形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu),組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。
優(yōu)點(diǎn):
(1)定義了包含基本對(duì)象和組合對(duì)象的類層次結(jié)構(gòu)。
(2)統(tǒng)一了組合對(duì)象和葉子對(duì)象。
(3)簡(jiǎn)化了客戶端調(diào)用文章來源:http://www.zghlxwxcb.cn/news/detail-406195.html
(4)更容易擴(kuò)展。文章來源地址http://www.zghlxwxcb.cn/news/detail-406195.html
到了這里,關(guān)于【Java面試題】設(shè)計(jì)模式之七種結(jié)構(gòu)性模式——代理模式、適配器模式、橋接模式、裝飾模式、外觀模式、享元模式、組合模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!