23 種設計模式

根據(jù)設計模式的參考書 中所提到的,總共有 23 種設計模式。這些模式可以分為三大類:創(chuàng)建型模式(Creational Patterns)、結(jié)構(gòu)型模式(Structural Patterns)、行為型模式(Behavioral Patterns)

創(chuàng)建型模式

這些設計模式提供了一種在創(chuàng)建對象的同時隱藏創(chuàng)建邏輯的方式,而不是使用新的運算符直接實例化對象。這使得程序在判斷針對某個給定實例需要創(chuàng)建哪些對象時更加靈活。

工廠模式(Factory Pattern)

抽象工廠模式(Abstract Factory Pattern)

單例模式(Singleton Pattern)

建造者模式(Builder Pattern)

原型模式(Prototype Pattern)

工廠模式:定義一個創(chuàng)建對象的接口,讓其子類自己決定實例化哪一個工廠類,工廠模式使其創(chuàng)建過程延遲到子類進行。

抽象工廠模式:提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類。

單例模式:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。

建造者模式:將一個復雜的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。

原型模式:用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。

結(jié)構(gòu)型模式

這些設計模式關(guān)注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。

適配器模式(Adapter Pattern)

橋接模式(Bridge Pattern)

過濾器模式(Filter、Criteria Pattern)

組合模式(Composite Pattern)

裝飾器模式(Decorator Pattern)

外觀模式(Facade Pattern)

享元模式(Flyweight Pattern)

代理模式(Proxy Pattern)

適配器模式:將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

橋接模式:將抽象部分與實現(xiàn)部分分離,使它們都可以獨立的變化。

過濾器模式:這種模式允許開發(fā)人員使用不同的標準來過濾一組對象,通過邏輯運算以解耦的方式把它們連接起來

組合模式:將對象組合成樹形結(jié)構(gòu)以表示"部分-整體"的層次結(jié)構(gòu)。組合模式使得用戶對單個對象和組合對象的使用具有一致性。

裝飾器模式:動態(tài)地給一個對象添加一些額外的職責。就增加功能來說,裝飾器模式相比生成子類更為靈活。

外觀模式:為子系統(tǒng)中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。

享元模式:運用共享技術(shù)有效地支持大量細粒度的對象。

代理模式:為其他對象提供一種代理以控制對這個對象的訪問。

行為型模式

這些設計模式特別關(guān)注對象之間的通信。

責任鏈模式(Chain of Responsibility Pattern)

命令模式(Command Pattern)

解釋器模式(Interpreter Pattern)

迭代器模式(Iterator Pattern)

中介者模式(Mediator Pattern)

備忘錄模式(Memento Pattern)

觀察者模式(Observer Pattern)

狀態(tài)模式(State Pattern)

空對象模式(Null Object Pattern)

策略模式(Strategy Pattern)

模板模式(Template Pattern)

訪問者模式(Visitor Pattern)

責任鏈模式:避免請求發(fā)送者與接收者耦合在一起,讓多個對象都有可能接收請求,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止。

命令模式:將一個請求封裝成一個對象,從而使您可以用不同的請求對客戶進行參數(shù)化。

解釋器模式:給定一個語言,定義它的文法表示,并定義一個解釋器,這個解釋器使用該標識來解釋語言中的句子。

迭代器模式:提供一種方法順序訪問一個聚合對象中各個元素, 而又無須暴露該對象的內(nèi)部表示。

中介者模式:用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。

備忘錄模式:在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。

狀態(tài)模式:定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。

空對象模式:在空對象模式中,我們創(chuàng)建一個指定各種要執(zhí)行的操作的抽象類和擴展該類的實體類,還創(chuàng)建一個未對該類做任何實現(xiàn)的空對象類,該空對象類將無縫地使用在需要檢查空值的地方。

策略模式:定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。

模板模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。

訪問者模式:主要將數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作分離。

J2EE模式

這些設計模式特別關(guān)注表示層。這些模式是由 Sun Java Center 鑒定的。

MVC 模式(MVC Pattern)

業(yè)務代表模式(Business Delegate Pattern)

組合實體模式(Composite Entity Pattern)

數(shù)據(jù)訪問對象模式(Data Access Object Pattern)

前端控制器模式(Front Controller Pattern)

攔截過濾器模式(Intercepting Filter Pattern)

服務定位器模式(Service Locator Pattern)

傳輸對象模式(Transfer Object Pattern)

MVC模式

MVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用于應用程序的分層開發(fā)。

Model(模型)- 模型代表一個存取數(shù)據(jù)的對象或 JAVA POJO。它也可以帶有邏輯,在數(shù)據(jù)變化時更新控制器。

View(視圖)- 視圖代表模型包含的數(shù)據(jù)的可視化。

Controller(控制器)- 控制器作用于模型和視圖上。它控制數(shù)據(jù)流向模型對象,并在數(shù)據(jù)變化時更新視圖。它使視圖與模型分離開。

前端控制器模式

前端控制器模式(Front Controller Pattern)是用來提供一個集中的請求處理機制,所有的請求都將由一個單一的處理程序處理。該處理程序可以做認證/授權(quán)/記錄日志,或者跟蹤請求,然后把請求傳給相應的處理程序。以下是這種設計模式的實體。

前端控制器(Front Controller)- 處理應用程序所有類型請求的單個處理程序,應用程序可以是基于web的應用程序,也可以是基于桌面的應用程序。

調(diào)度器(Dispatcher)- 前端控制器可能使用一個調(diào)度器對象來調(diào)度請求到相應的具體處理程序。

視圖(View)- 視圖是為請求而創(chuàng)建的對象。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容