1.創建模式,* * *五種類型:工廠方法模式、抽象工廠、單例模式、構建器模式和原型模式。
第二,有七種結構模式:適配器模式、裝飾者模式、代理者模式、外觀模式、橋梁模式、組合模式和享受模式。
三。行為模式* * *十壹種類型:策略模式、模板方法模式、觀察者模式、叠代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式和解釋者模式。
1,工廠方法模式:
定義壹個創建對象的接口,讓子類決定實例化哪個類。工廠方法將類的實例化延遲到它的子類。
工廠模式的壹個問題是,類的創建依賴於工廠類,即如果要擴展程序,必須修改工廠類,這違反了閉包原則。所以從設計的角度來說,是有壹定問題的,這個用的是工廠方法模式。
創建壹個工廠接口,創建多個工廠實現類,這樣壹旦需要添加新的功能,直接添加新的工廠類就可以了,不需要修改之前的代碼。
2.抽象工廠:
提供壹個接口,用於創建壹系列相關或相互依賴的對象,而無需指定它們的特定類。抽象工廠需要創造壹系列產品,重點是“創造哪些產品”。也就是說,如果妳做開發,妳的主要任務就是劃分不同的產品線,盡量保持各個產品線的接口壹致,這樣就可以從同壹個抽象工廠繼承。
3.單例模式:
Singleton是壹種常見的設計模式。在Java應用程序中,單例對象可以保證JVM中只存在壹個對象實例。這種模式有幾個優點:
(1)有些類創建頻繁,對於壹些大型對象來說是很大的系統開銷。
(2)省略了new運算符,減少了系統內存的使用頻率,降低了GC壓力。
(3)有些類,比如交易所的核心交易引擎,控制著交易過程。如果可以創建壹個以上的類,系統將完全混亂。(比如壹支軍隊同時有多個指揮官指揮,那肯定是壹塌糊塗),所以只有使用singleton模式,核心交易服務器才能獨立控制整個過程。
4、建設者模式:
把壹個復雜對象的構造和它的表示分開,這樣同壹個構造過程可以創建不同的表示。
5.原型模式:
雖然原型模式是壹種創意模式,但與工程模式無關。從名字就可以看出,這種模式的思想是以壹個對象為原型進行復制克隆,產生壹個與原對象相似的新對象。這個總結將通過復制對象來解釋。在Java中,復制對象是通過clone()實現的。首先,創建壹個原型類。
6.適配器模式:
適配器模式將壹個類的接口轉換成客戶端期望的另壹種接口表示,以消除接口不匹配導致的類的兼容性問題。主要分為三類:類適配器模式、對象適配器模式和接口適配器模式。
7.裝飾模式:
顧名思義,decorator pattern就是給壹個對象增加壹些新的功能,而且是動態的,要求裝飾對象和被裝飾對象實現同壹個接口,裝飾對象持有被裝飾對象的實例。
8.代理模式:
代理模式是添加壹個代理類,對原對象做壹些操作。比如我們租房子,回去找中介。為什麽?因為妳對這壹帶的房子沒有全面的了解,希望能找到更熟悉的人幫助妳。這裏的代理就是這個意思。
9.外觀模式:
外觀模式是為了解決類及其家族之間的依賴關系。和spring壹樣,類之間的關系可以配置到配置文件中,而appearance pattern就是把它們的關系放在壹個Facade類中,減少了類之間的耦合。這種模式中不涉及接口。
10,橋接模式:
橋接模式是將事物從其具體實現中分離出來,使其能夠獨立變化。橋接的目的是將抽象與實現解耦,這樣它們就可以獨立地改變,就像我們常用的JDBC橋驅動管理器壹樣。
當JDBC連接數據庫時,它基本上不需要移動太多代碼,甚至根本不需要移動。原因是JDBC提供了壹個統壹的接口,每個數據庫提供了自己的實現。用壹個叫數據庫驅動的程序來橋接就好了。
11,組合模式:
組合模式,有時稱為部分-整體模式,在處理類似樹形結構的問題時更為方便。使用場景:多個對象組合起來操作,常用來表示樹形結構,如二叉樹、數字等。
12,享元模式:
共享元模式的主要目的是實現對象的* * *共享,即* * *共享池,在系統對象較多的情況下可以減少內存開銷,通常與工廠模式壹起使用。
13,策略模式:
策略模式定義了壹系列的算法,並將每個算法封裝起來,這樣就可以互相替換,算法的改變也不會影響到使用算法的客戶。需要設計壹個接口,為壹系列實現類提供統壹的方法。多個實現類實現接口,設計壹個抽象類(可選,屬於輔助類),提供輔助功能。
14,模板方法模式:
在抽象類中,有壹個main方法,然後是1...定義了n個方法,可以是抽象的,也可以是實際的方法。定義壹個類,繼承抽象類,重寫抽象方法,通過調用抽象類來調用子類。
15,觀察者模式:
觀察者模式很好理解,類似於郵件訂閱和RSS訂閱。我們在瀏覽壹些博客或者wiki的時候,經常會看到RSS圖標,這意味著當妳訂閱了文章之後,如果有後續的更新會及時通知妳。
其實簡單來說,當壹個對象發生變化的時候,依賴它的其他對象都會被通知,並且會隨之變化!對象之間是壹對多的關系。
16,叠代子模式:
顧名思義,叠代器模式是按順序訪問集合中的對象。壹般來說,在收藏中很常見。如果妳熟悉集合類,理解這種模式會非常容易。這句話包含兩個意思:壹個是需要遍歷的對象,即聚合對象,另壹個是叠代器對象,用來遍歷聚合對象。
17,責任鏈模式:
責任鏈模式,有多個對象,每個對象持有對下壹個對象的引用,這樣就會形成壹個鏈,請求會沿著這個鏈傳遞,直到壹個對象決定處理請求。但是發送方並不知道最終哪個對象會處理請求,所以可以實現責任鏈模型,在不隱藏客戶端的情況下動態調整系統。
18,命令模式:
命令模式的目的是分離命令的發送者和執行者,並將請求和執行分開。
19,紀念品圖案:
主要目的是保存某個對象的某個狀態,以便在適當的時候恢復該對象。個人覺得叫備份模式更形象。壹般來說,如果原A類中有各種屬性,A可以決定需要備份的屬性。Memo類B用來存儲A的壹些內部狀態,C類用來存儲memo,只能存儲不能修改。
20、狀態模式:
狀態模式在日常開發中被廣泛使用,尤其是制作網站時。我們有時候想根據某個屬性來區分對象的某些功能,比如簡單的權限控制。
21,訪客模式:
訪問者模式將數據結構從作用於結構的操作中分離出來,因此操作集可以相對自由地發展。訪問者模式適用於數據結構相對穩定、算法多變的系統。因為訪問者模式很容易增加算法的運算量。
如果系統數據結構對象容易更改,經常添加新的數據對象,則不適合使用訪問者模式。訪問者模式的優點是很容易添加操作,因為添加操作意味著添加新的訪問者。訪問者模式將相關行為集中到壹個訪問者對象中,它的改變不影響系統數據結構。它的缺點是很難添加新的數據結構。
22.中介模式:
中介模式也被用來降低類之間的耦合性,因為如果類之間存在依賴關系,不利於功能的擴展和維護,因為只要修改壹個對象,其他相關的對象也要修改。
如果使用mediator模式,只需要關心與Mediator類的關系,具體類之間的關系和調度都要交給Mediator,有點像spring容器的作用。
23、解釋器模式:
解釋器模式壹般主要用於OOP開發中編譯器的開發,所以應用範圍比較窄。
擴展數據:
介紹三本關於設計模式的書:
1,設計模式:可復用面向對象軟件的基礎。
作者:[美]埃裏希·伽馬,理查德·赫爾姆,拉爾夫·約翰遜,約翰·維裏西德斯。
出版社:機械工業出版社
2.軟件提示:設計模式。
作者:鄭阿奇
出版社:電子工業出版社
3.設計模式:基於C#的工程實現與擴展
作者:王翔
出版社:電子工業出版社
百度百科-設計模式