1. 六大原則
1. 單一職責原則(Single Responsibility Principle)
2. 開閉原則(Open Close Principle)
3. 里氏替換原則(Liskov Substitution Principle)
4. 依賴倒置原則(Dependence Inversion Principle)
5. 接口隔離原則(Interface Segregation Principle)
6. 迪米特原則(Law Of Demeter)
2. 創(chuàng)建型模式
創(chuàng)建型模式(Creational Pattern)對類的實例化過程進行了抽象,能夠?qū)④浖K中對象的創(chuàng)建和對象的使用分離。
簡單工廠模式(Simple Factory):
工廠方法模式(Factory Method):
定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪個類
抽象工廠模式(Abstract Factory):
為創(chuàng)建一組相關(guān)或者相互依賴的對象提供一個接口,而不需要指定他們的具體類
原型模式(Prototype):
用原型實例指定創(chuàng)建對象的種類,并通過拷貝這些原型創(chuàng)建新的對象
單例模式(Singleton):
確保某一個類只有一個實例,而且自行實例化,并向整個系統(tǒng)提供這個實例。
建造者模式(Builder):
將一個復雜對象的構(gòu)建與它的表示分離,使得同樣的創(chuàng)建過程可以創(chuàng)建不同的表示
3. 結(jié)構(gòu)型模式
結(jié)構(gòu)型模式(Structural Pattern):
描述如何將類或者對象結(jié)合在一起形成更大的結(jié)構(gòu)
適配器模式(Adapter):
適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作
橋接模式(Bridge):
將抽象部分與實現(xiàn)部分分離,使他們可以獨立地進行變化
組合模式(Composite):
將對象組合成樹形結(jié)構(gòu)以表示 部分 整體的層次結(jié)構(gòu) 使得用戶對單個對象和組合對象的使用具有一致性
裝飾模式(Decorator):
動態(tài)地給一個對象添加一些額外的職責。就增加功能來說,裝飾模式相比生成子類更為靈活
外觀模式(Facade):
要求一個子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個統(tǒng)一的對象進行。提供一個高層次的接口,使得子系統(tǒng)更易于使用。
享元模式(Flyweight):
使用共享對象可有效地支持大量的細粒度的對象
代理模式(Proxy):
為其他對象提供一種代理以控制對這個對象的訪問
4. 行為型模式
行為型模式(Behavioral Pattern):是對在不同的對象之間劃分責任和算法的抽象化。
職責鏈模式(Chain of Responsibility):
使多個對象都有機會處理請求,從而避免了請求的發(fā)送者和接受者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有對象處理它為止。
命令模式(Command):
將一個請求封裝成一個對象,從而讓用戶使用不同的請求把客戶端參數(shù)化;對請求排隊或者記錄請求日志,以及支持可撤銷的操作
解釋器模式(Interpreter):
給定一門語言,定義它的文法的一種表示,并定義一個解釋器,該解釋器使用該表示來解釋語言中的句子.
迭代器模式(Iterator):
提供一種方法順序訪問一個容器對象中的各個元素,而又不需要暴露該對象的內(nèi)部表示
中介者模式(Mediator):
中介者模式包裝了一系列對象相互作用的方式,使得這些對象不必相互明顯作用。從而使它們可以松散耦合。當某些對象之間的作用發(fā)生改變時,不會立即影響其他的一些對象之間的作用。保證這些作用可以彼此獨立的變化。中介者模式將多對多的相互作用轉(zhuǎn)化為一對多的相互作用。中介者模式將對象的行為和協(xié)作抽象化,把對象在小尺度的行為上與其他對象的相互作用分開處理。
備忘錄模式(Memento):
在不破壞封閉的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在改對象之外保存這個狀態(tài),這樣,以后就可將該對象恢復到原先保存的狀態(tài)
觀察者模式(Observer):
定義對象間一種一對多的依賴關(guān)系,使得每當一個對象改變狀態(tài),則所有依賴于它的對象都會得到通知并被自動更新
狀態(tài)模式(State):
當一個對象的內(nèi)在狀態(tài)改變時允許改變其行為,這個對象看起來像改變了其類
策略模式(Strategy):
定義一系列算法,將每一個算法封裝起來,并讓它們可以相互替換。策略模式讓算法獨立于使用它的客戶而變化
模板方法模式(Template Method):
定義一個操作中的算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結(jié)構(gòu)即可沖定義該算法的某些特定步驟
訪問者模式(Visitor):
封裝一些作用于某種數(shù)據(jù)結(jié)構(gòu)中的各元素的操作,它可以在不改變這個數(shù)據(jù)結(jié)構(gòu)的前提下定義作用于這些元素的新的操作