常见设计模式说明
簡單工廠模式:需要在工廠類中做判斷,從而創造相應的產品。當增加新的產品時,就需要修改工廠類,但這違反了開放封閉原則(可以擴展,但是不可以修改)
工廠方法模式:是指定義一個用于創建對象的接口,讓子類決定實例化哪一個類。該方法使一個類的實例化延遲到其子類。缺點是:每增加一種產品,就需要增加一個對象的工廠,這就需要更多的類定義
抽象工廠模式:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類
策略模式:定義一系列算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化。也就是說這些算法所完成的功能一樣,對外接口一樣,只是各自實現上存在差異。用策略模式封裝算法,效果比較好
裝飾模式:動態地給一個對象添加一些額外的職責,提供了更加靈活的向對象添加職責的方式。可以用添加和分離的方法,用裝飾在運行時刻增加和刪除職責。裝飾模式提供了一種“即用即付”的方法來添加職責。它并不試圖在一個復雜的可定制的類中支持所有可預見的特征,相反,你可以定義一個簡單的類,并且用裝飾類給它逐漸地添加功能。可以從簡單的部件組合出復雜的功能
代理模式:為其他對象提供一種代理以控制對這個對象的訪問。有四種常用的情況:(1)遠程代理,(2)虛代理,(3)保護代理,(4)智能引用
原型模式:指定創建對象的種類,并且通過拷貝這些原型創建新的對象,拷貝是原型模式的精髓所在
模板方法模式:定義一個操作中的算法骨架,而將一些步驟延到子類中。模板方法使得子類可以不改變一個算法的結構即可以重定義該算法的某些特定步驟
外觀模式:當一個系統很復雜時,系統提供給客戶的是一個簡單的對外接口,而把里面復雜的結構都封裝了起來。客戶只需使用這些簡單接口就能使用這個系統,而不需要關注內部復雜的結構。為子系統中的一組接口提供一個一致的界面, 外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用
組合模式:將對象組合成樹形結構以表示“部分-整體”的層次結構。組合使得用戶對單個對象和組合對象的使用具有一致性
建造者模式:將一個復雜對象的【構建】與它的【表示】分離,使得同樣的構建過程可以創建不同的表示。建造者模式是在導向者的控制下一步一步構造產品的。建造者模式可以能更精細的控制構建過程,從而能更精細的控制所得產品的內部結構
觀察者模式:定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。它還有兩個別名,依賴,發布-訂閱
狀態模式:允許一個對象在其內部狀態改變時改變它的行為。對象看起來似乎修改了它的類。它有兩種使用情況:(1)一個對象的行為取決于它的狀態, 并且它必須在運行時刻根據狀態改變它的行為。(2)一個操作中含有龐大的多分支的條件語句,且這些分支依賴于該對象的狀態
適配器模式:將一個類的接口轉換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作
備忘錄模式:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。這樣以后就可將該對象恢復到原先保存的狀態
橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立地變化
職責鏈模式:使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它為止
中介者模式:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互
享元模式:運用共享技術有效地支持大量細粒度的對象,內在的屬性是可以共享的,區分在于外在屬性。
總結
- 上一篇: IO消耗和处理器消耗
- 下一篇: 后台开发经典书籍--大话设计模式