設計模式總的分為三種,創建型模式、結構性模式、行為型模式
1、創建型模式
創建型模式為根據實際情況來創建對象,創建的模式又分為對象創建模式和類創建模式,對象創建模式會把對象創建的一部分在另一個對象中實現,類創建模式則將它對象的創建在子類中實現。
2、結構性模式
結構性模式為處理模塊之間的耦合關系
3、行為型模式
行為型模式
創建型 (Creational)
1、簡單工廠(Simple Factory):不同于靜態工廠是因為不使用static方法
2、工廠方法(Simple Factory):一個class創建一個你想要使用的對象 [code] http://www.phptherightway.com/pages/Design-Patterns.html
3、抽象工廠(Abstract Factor):不使用特定的類來創建相關或是不相關的對象,創建的類都繼承相同的接口,抽象工廠不關心對象是如何創建的,he just knows how they go together
4、生成器 (Builder):一個接口,用來創建復雜對象的部分
5、原型 (Prototype):通過創建一個原型對象,然后復制原型(clone)對象來避免通過標準的方式創建大量的對象產生的開銷
6、單例 (Singleton):當設計一個web應用的時候,保證一個類僅有一個實例,并提供一個訪問他的全局訪問點例如框架中的數據庫連接 [code]http://www.phptherightway.com/pages/Design-Patterns.html
7、靜態工廠(Static Factory):和簡單工廠很像,只是使用了靜態對象
8、對象池 (pool):對新創建的對象應用一系列的初始化操作,讓對象保持立即可使用的狀態
9、多例 (Multition):使類僅有一個命名的對象的集合可供使用,像單例模式但是有多個實例。比如2 個數據庫連接,比如,一個連接MySQL,另一個連接SQLite
結構型 (Structural)
1、適配器 (Adapter):將不同接口適配成統一的API接口,例如數據操作有mysql、mysqli、pdo等,可利用適配器模式統一接口
2、橋接模式 (Bridge):將抽象部分與它的實現部分分離,使它們都可以獨立的變化
3、合成模式 (Composite):將對象組合成樹形結構以表示“部分整體”的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。
4、裝飾器模式(Decorater):不修改原類代碼和繼承的情況下動態擴展類的功能,例如框架的每個Controller文件會提供before和after方法
5、外觀模式 (Facade):是指提供一個統一的接口去訪問多個子系統的多個不同的接口,它為子系統中的一組接口提供一個統一的高層接口。使用子系統更容易使用。
6、享元模式 (Flyweight):把經常要使用到的對象共享起來,而不去從新創建而占用內存。 http://lobert.iteye.com/blog/2066311
7、代理模式 (Proxy):為昂貴或者無法復制的資源提供接口
8、注冊模式 (Registry):為應用中常用的對象實現一個中央存儲,通常用一個只有靜態方法的抽象類來實現(或者使用單例模式)
行為型(Behavioral)
1、責任鏈模式 (Chain of Responsibilities):使多個對象都有機會處理請求,從而避免請求的發送者和接受者耦合的關系。將這個對象形成一條鏈,并沿著這條鏈傳遞該請求,直到有對象處理它為止。
2、命令模式 (Command):命令模式是對命令的封裝。命令模式把發出命令的責任和執行命令的責任分割開,委派給不同的對象。
3、解釋器模式 (Interpreter):用于分析一個實體的關鍵元素,并且針對每個元素提供自己的解釋或相應動作
4、迭代器模式 (Iterator):提供一個方法順序訪問一個聚合對象中各個元素,在PHP中將繼承Iterator類
5、中介者模式 (Mediator):用一個中介者對象來封裝一系列的對象交互。中介者使得各對象不需要顯式地相互引用,從而使其松散耦合,而且可以獨立地改變它們之間的交互。
6、備忘錄模式 (Memento):在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。這樣可以在以后把該對象的狀態恢復到之前保存的狀態。
7、觀察者模式 (Observer):定義對象間一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并自動更新。如微博關注博主,博主更新,關注者都能得到通知
8、狀態模式 (State):狀態模式允許一個對象在其內部狀態改變的時候改變其行為。這個對象看上去就像是改變了它的類一樣
9、策略模式 (Strategy):針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,例如進入個人主頁時,根據瀏覽者的不同,給予不同的顯示與操作 [code]http://www.phptherightway.com/pages/Design-Patterns.html
10、模板方法模式(Template Method):定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。Template Method 使得子類可以在不改變一個算法的結構的情況下重定義該算法的某些特定的步驟
11、訪客模式 (Visitor): 訪問者模式表示一個作用于某對象結構中的各元素的操作。它使你可以在不改變各元素類的前提下定義作用于這些元素的新操作。
文章列表