创建型、结构型、行为型模式(1)
來源:http://blog.csdn.net/wulingmin21/article/details/6753363
| 目的 | 創建型模式 | 結構型模式 | 行為型模式 |
| 概念 | 創建型模式,就是創建對象的模式,抽象了實例化的過程。它幫助一個系統獨立于如何創建、組合和表示它的那些對象。關注的是對象的創建,創建型模式將創建對象的過程進行了抽象,也可以理解為將創建對象的過程進行了封裝,作為客戶程序僅僅需要去使用對象,而不再關心創建對象過程中的邏輯 | 結構型模式是為解決怎樣組裝現有的類,設計他們的交互方式,從而達到實現一定的功能的目的。結構型模式包容了對很多問題的解決。例如:擴展性(外觀、組成、代理、裝飾)封裝性(適配器,橋接) | 行為型模式涉及到算法和對象間職責的分配,行為模式描述了對象和類的模式,以及它們之間的通信模式,行為型模式刻劃了在程序運行時難以跟蹤的復雜的控制流可分為行為類模式和行為對象模式1.行為模式使用繼承機制在類間分派行為2.行為對象模式使用對象聚合來分配行為。一些行為對象模式描述了一組對等的對象怎樣相互協作以完成其中任何一個對象都無法單獨完成的任務。 |
| 類 | Factory Method | Adapter(類) | Interpreter |
| Template Method | |||
| 對象 | Abstract Factory | Adapter(對象) | Chain of Responsibility |
| Builder | Bridge | Command | |
| Prototype | Composite | Iterator | |
| Singleton | Decorator | Mediator | |
| Facade | Memento | ||
| Flyweight | Observer | ||
| Proxy | State | ||
| Strategy | |||
| Visito |
創建型模式
1.抽象工廠模式(Abstract Factory)
??????? 提供一個接口,讓該接口負責創建一系列“相關或者相互依賴的對象”,無需指定他們的具體類。
2.建造者模式(Builder)
??????? 將一個復雜對象的構建與其表示向分離,使得同樣的構建過程可以創建不同的表示
3.工廠方法(Factory Method)
??????? 定義一個用于創建對象的接口,讓子類決定實例化哪個類。FactoryMethod使得一個類的實例化延遲到子類
4.原型模式(Prototype)
???????使用原型實例指定創建對象的種類,然后通過拷貝這些原型來創建型的對象
5.單例模式(Singleton)
???????保證一個類僅有一個實例,并提供一個訪問它的全局訪問點
| Abstract Factory | Builder |
| 著重于多個系列的產品對象 | 著重于一步步構造一個復雜對象 |
| 產品立即返回 | 在最后一步返回產品 (例如:《大話設計模式》里面的炒菜程序,每一步過了之后,“菜”這個產品才產生出來) |
?
| Factory Method | Prototypes |
| 通常在Template Methods中被調用 | 不需要創建子類 |
| 不需要Initialize操作 | 要求一個針對Product類的Intialize操作 |
| 重新創建一個對象 | 利用現有的對象進行克隆,當兩個對象或多個對象雷同的時候,可以考慮用一個已創建的對象去克隆出其余的對象 |
結構型模式
6.適配器模式(Adapter)
??????????將一個類的接口轉換成客戶希望的另一個接口。
?? ? ? ? ?Adapter模式使得原本由于接口不兼容而不能一起工作的類可以一起工作
7.橋接(Bridge)
????????? 將抽象部分與實現部分分離使他們可以獨立的變化
8.組合(Composite)
????????? 將對象組合成樹形結構以表示“部分-整體”的層次結構。
?? ? ? ? ?Composite模式使得客戶對單個對象和組合對象的使用具有一致性
9.裝飾(Decorator)
??????????動態的給一個對象添加一些額外的職責。就增加功能而言,Decorator模式比生成子類更為靈活
10.外觀(Facade)
????????? 為子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用
11.享元(Flyweight)
????????? 運用共享技術有效的支持大量細粒度的對象
12.代理(Proxy)
????????? 為其他對象提供一種代理以控制這個對象的訪問
行為型模式
13.觀察者(Observer)
定義對象間的一種一對多的依賴關系,當一個對像的狀態改變時,所有依賴于它的對象都得到通知并被自動更新。
14.模版方法(TemplateMethod)
定義一個操作的算法骨架,而將一些步驟延遲到子類中,模版方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
15.命令(Command)
將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;可以對請求排隊或記錄請求日志,以及支持可撤銷的操作
16.狀態(State)
允許一個對象在其內部狀態改變時改變它的行為,讓對象看起來似乎修改了它的類
17.職責鏈(ChainofResponsibility)
使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它為止。
18.解釋器(interpreter)
給定一個語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
19.中介者(Mediator)
用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以獨立地改變他們之間的交互。
20.訪問者(Visitor)
表示一個作用于某對象結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新的操作。
21.策略(Strategy)
定義一系列的算法,把它們一個個封裝起來,并且使它們可以相互替換。此模式使得算法可獨立于使用它的客戶而變化。
22.備忘錄(Memento)
在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。這樣以后就可將該對象恢復到原先保存的狀態。
23.迭代器(Iterator)
提供一種方法順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內部表示。
參考資料:
《大話設計模式》
總結
以上是生活随笔為你收集整理的创建型、结构型、行为型模式(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓逆向_15( 三 ) --- An
- 下一篇: IDA Pro7.0 使用技巧 总结