工作了也有小五年了,從剛大學畢業出來,什么都不懂的小白,到能獨立保質保量完成開發任務的核心員工,設計模式真的是能反映出一個人的代碼能力和設計能力,我到目前接觸和使用在項目中的有,責任鏈模式(乾隆下江南,你要怎么安排萬歲爺的行程?通過責任鏈來實現,挺有意思的,其實就是不知道責任在誰那里 ),觀察者模式(一個對象發生改變,另一個對象隨着此對象的改變而改變),模版模式(父類只管提供思路,具體怎么干,子類自己去干),工廠模式這里就不提了,使用的太廣了,還有一個策略模式(替換到大量if-else,讓代碼看起來優雅,這是絕大數的開發人員追尋的目標),java有23中設計模式,模式里又分結構型和創建型兩大類,設計模式的使用,不是一朝一夕就能領略到其的風采,需要開發人員的再實際使用的時候,多思考多領悟,加油,打工人!!!
1、Iterator模式----一個一個遍歷
1)迭代器模式以順序方式訪問集合對象的元素,而不知道其底層表示。
2)迭代器模式是行為模式之一。
2、Adapter模式----加個適配器,以便於復用
Adapter模式有兩種:類適配器模式(使用繼承的適配器)、對象適配器模式(使用委托的適配器)
1)使用繼承的適配器 extends A implements B interface使用比較普遍
2)使用委托的適配器 extends A reference B controller中使用ftp工具類
3)適配器模式是一種結構模型,適配器是兩個不兼容實體之間的轉換器。是兩個不兼容接口之間的橋梁。
3、Template Method模式--------將具體處理交給子類
1)父類抽象類中公開幾個抽象方法供子類去實現。在父抽象類中有另一個方法或幾個方法使用抽象方法來實現業務邏輯。
2)抽象方法通常用於父類所需的每個步驟。
3)模版方法模式是行為模式。
4、Factory Method模式---------將實例的生成交給子類
1)在工廠模式中,我們創建對象而不將創建邏輯暴露給客戶端。
2)核心工廠模式是一個Factory類,ShapeFactory類基於傳遞給getShape()方法的String值創建Shape對象。
如果String值為CIRCLE,它將創建一個Circle對象。
5、Singleton模式----------只有一個實例
1)單例模式是一種創建模式。這種模式只涉及一個單獨的類,它負責創建自己的對象。
2)該類確保只創建單個對象。這個類提供了一種訪問其唯一對象的方法。
6、Prototype模式--------通過復制生成實例
1)原型模式是創建模式之一。
2)原型模式有助於創建具有更好性能的重復對象。
3)在原型模式中,我們將返回一個現有對象的克隆,而不是創建一個新的對象。
4)我們使用原型創建模式,如果創建一個新對象的成本是昂貴和資源密集型。
7、Builder模式-----------組建復雜的實例
1)用於使用簡單對象創建復雜對象,它從小而簡單的對象逐步創建更大的對象。
2)生成器模式是另一個創建模式。
8、Abstract Factory模式--------將關聯零件組裝成產品
1)抽象工廠模式是另一種創建模式。
2)抽象工廠模式,也稱為工廠的工廠,有一個工廠創建其他工廠。當使用抽象工廠模式時,
我們首先使用超級工廠創建工廠,然后使用創建的工廠創建對象。
9、Bridge模式---------將類的功能層次結構與實現層次結構分離
1)將定義與實現相分離。它是一種結構模式。
2)此模式涉及充當橋梁的接口。橋使得具體類與接口實現類無關。
3)這兩種類型的類可以改變而不影響對方。
10、Strategy模式--------整體的替換算法(替換大量的if-else)
1)可以在運行時更改算法
2)策略模式是一種行為模式
3)在策略模式中,我們創建表示各種算法的對象和運行算法的上下文對象
4)策略對象更改上下文對象上的算法
11、Composite模式-------容器和內容的一致性
1)組合模式是一種結構模式,因為它創建了一組對象的樹狀結構
2)組合模式將一組對象視為單個對象
3)使用一個類來表示樹結構
4)在組合模式中,我們將創建一個包含自己對象的類的組
12、Decorator模式-------裝飾邊框與被裝飾物的一致性
1)裝飾模式在不鏈接其結構的情況下,向現有對象添加新的功能
2)它是一種結構模型,因為它充當現有類的包裝器
3)裝飾模式創建一個裝飾器來包裝原始類並提供其他功能
13、Visitor模式-------訪問數據結構並處理數據
1)在訪問者模式中,元素對象接收訪問者對象,而訪問者對象處理元素對象上的操作
2)此模式是一種行為模式
3)通過這種方式,可以從不同的訪問者改變元素的執行算法。
14、Chain of Responsibility------推卸責任
1)責任鏈為請求創建一個接收者對象列表
2)這種模式是行為模式
3)當使用責任鏈模式時,通常每個接收器都包含對另一個接收器的引用。
4)如果一個對象不能處理請求時,則它將相同的對象傳遞給下一個接收者,等等。
15、Facade模式------簡單窗口
1)隱藏了系統的復雜性
2)提供了一個簡單的接口,客戶端使用接口與系統交互。
3)外觀模式是結構型模型。
16、Mediator模式----只有一個仲裁者
1)減少多個對象之間的通信
2)此模式提供了一個處理不同類之間的所有通信的中介類
3)中介者模式屬於行為模式類別
17、Observer模式-----發送狀態變化通知
1)觀察者模式用於在一個對象被修改時通知其相關對象
2)觀察者模式是一種行為模式類別。
18、Memento模式--------保存對象的狀態
1)備忘錄模式,是一種行為模式
2)在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象外保存這個狀態,這樣以后可將此對象恢復成原來的狀態。
3)把角色屬性的保存封裝在單獨的類中,體現“職責分離”。
19、State模式---------用類表示狀態
1)類行為基於其狀態而改變
2)狀態模式是一種行為模式
3)當使用狀態模式時,我們創建各種狀態對象和上下文對象,其行為隨着狀態對象改變而改變。
20、Flyweight模式---------共享對象,避免浪費
1)享元模式,是一種結構模式
2)提供了減少對象數量從而改善應用所需的對象結構的方式,運用共享技術有效地支持大量細粒度的對象
21、Proxy模式----------只在必要時生成實例
1)一個類代表另一個類的功能
2)代理模式是一種結構模型
3)我們創建具有原始接口的對象,以將其功能暴露給外部世界。
22、Command模式-------命令也是類
1)命令模式是數據驅動設計模式,它是行為模式之一
2)請求被作為命令的對象包裝傳遞給invoke對象
3)invoke對象將命令傳遞給相應的對象並且該對象執行該命令
23、Interpreter模式-------語法規則也是類
1)通常使用解釋器模式來評估語言語法或表達
2)這種類型的模式是行為模式類別之一