一砾赔、設(shè)計模式按目的來分,主要分為3個類型——創(chuàng)建型董瞻、行為型和結(jié)構(gòu)型卷仑。?
1) 創(chuàng)建型: 主要是用來處理對象的創(chuàng)建過程峻村,分為以下幾種:
01.單例模式(Singleton)
一個類有且僅有一個實例,并且自行實例化向整個系統(tǒng)提供锡凝。
提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口粘昨,而無須指定它們的具體類。
定義一個創(chuàng)建對象的工廠接口窜锯,將實際創(chuàng)建工作推遲到子類當中张肾。
將一個復(fù)雜對象的構(gòu)建與他的表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示锚扎。
2)?行為型(對類或?qū)ο笤鯓咏换ズ驮鯓臃峙渎氊熯M行描述)
提供一個方法順序訪問一個聚合對象的各個元素吞瞪,而又不需要暴露該對象的內(nèi)部表示。
定義對象間一對多的依賴關(guān)系驾孔,當一個對象的狀態(tài)發(fā)生改變時芍秆,所有依賴于它的對象都得到通知自動更新。
定義一個操作中的算法的骨架翠勉,而將一些步驟延遲到子類中妖啥,使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義算法中的某些步驟。
將一個請求封裝為一個對象对碌,從而使你可以用不同的請求對客戶進行參數(shù)化荆虱,對請求排隊和記錄請求日志,以及支持可撤銷的操作朽们。
允許對象在其內(nèi)部狀態(tài)改變時改變他的行為怀读,對象看起來似乎改變了他的類。
定義一系列的算法骑脱,把他們一個個封裝起來菜枷,并使他們可以互相替換,讓算法獨立于使用它的客戶而獨立變化惜姐。
12.責任鏈模式(Chain of Responsibility)
使多個對象都有機會處理請求犁跪,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。
用一個中介對象封裝一系列的對象交互歹袁。
表示一個作用于某對象結(jié)構(gòu)中的各元素的操作坷衍,它使你可以在不改變各元素類的前提下定義作用于這個元素的新操作。
給定一個語言条舔,定義他的文法的一個表示枫耳,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子孟抗。
在不破壞封閉的前提下迁杨,捕獲一個對象的內(nèi)部狀態(tài)钻心,并在該對象之外保存這個狀態(tài)。
3) 結(jié)構(gòu)型(處理類或者對象的組合)?
將對象組合成樹形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu)铅协,使得用戶對單個對象和組合對象的使用具有一致性捷沸。
為子系統(tǒng)中的一組接口提供一致的界面,定義一個高層接口狐史,這個接口使得子系統(tǒng)更容易使用痒给。
為其他對象提供一種代理以控制對這個對象的訪問。
將一類的接口轉(zhuǎn)換成客戶希望的另外一個接口骏全,使得原本由于接口不兼容而不能一起工作那些類可以一起工作苍柏。
通過創(chuàng)建一個包裝對象來包裹真實的對象,實現(xiàn)在不改變原類文件和使用繼承的情況下姜贡,動態(tài)地擴展一個對象的功能试吁。
將抽象部分與它的實現(xiàn)部分相分離,使他們可以獨立的變化楼咳。
用來盡可能減少內(nèi)存使用量以及分享資訊給盡可能多的相似物件熄捍。
二、總結(jié)
? ? ?1爬橡、以上是對設(shè)計模式使用場景的分類治唤,具體的設(shè)計模式棒动,會在日后的章節(jié)中說明舉例糙申,也會按照 創(chuàng)建型、行為型船惨、結(jié)構(gòu)型這三個分類來逐一講解設(shè)計模式的柜裸,有的設(shè)計模塊我也在學(xué)習(xí)中,歡迎大家一起交流粱锐。