design mode(php)

前段時間看了下設計模式 參考,以及head first設計模式,簡要以下php

## OO原則

* 封裝變化
* 多用組合,少用繼承
* 針對接口編程,不針對實現編程
* 爲交互對象之間的鬆耦合設計而努力
* 開閉原則,對擴展開放,對修改關閉
* 依賴倒置原則,依賴抽象,不要依賴具體類
* 最少知識原則,不讓太多類耦合在一塊兒,以避免修改系統一部分,會影響到其餘部分
* 單一責任原則,一個責任只指派給一個類

## 模式類表

* 備忘錄模式 備份對象某時刻的狀態,存儲在外部,須要時還原對象狀態(打遊戲中的存儲遊戲多個進度)
* 策略模式 多個算法,對外一個接口,用戶能夠根據須要切換(鴨子的叫聲,吱吱叫,不會叫,咕咕叫)
* 模板方法模式 流程、系統、算法總體骨架固定,分步驟執行,部分步驟可供子類修改
* 觀察者模式 一個對象須要根據另外一個對象的改變做出一些操做,須要監控改變(微博訂閱,公衆號訂閱)
* 工廠模式(簡單工廠,工廠方法,抽象工廠) 工廠生產一類產品,客戶從具體產品中解耦
* 單例模式(飽漢式,餓漢式)一個類只有一個實體
* 適配器模式 對象之間存在差別,使用一個轉換,使得客戶能像老接口那樣使用新對象(三孔插座適配兩空插座)
* 門面模式(外觀模式) 集成複雜子系統,對外提供簡單的使用方式(播放家庭影院)
* 裝飾者模式 包含已有產品,在產品上附加操做(咖啡,加摩卡,加奶泡,加豆漿)
* 命令模式 解耦請求發出者和具體執行者
* 狀態模式 對象中的操做根據對象的狀態不一樣而不一樣,狀態模式讓修改局部化,某一狀態中的對象操做修改不影響其餘狀態(糖果機的未投幣,已投幣,售糖果,售罄狀態下的操做投幣,轉動曲柄,吐幣操做)
* 迭代器模式 單一責任原則,提供一致的方式順序訪問聚合內的各個對象,而不暴露對象在聚合中的表示(數組,list,hashtable)

## 其餘模式

* 組合模式(合成模式)容許將對象組合成樹形結構來表現總體和部分層次結構,組合能讓客戶以一致的方式處理個別對象以及組合對象
* 責任鏈模式 建立一個對項鍊,請求過來時,對項鍊每一個對象依序檢查這個請求,或者處理這個請求,或者把請求轉給對項鍊中下一個對象
* 生成器模式(建造者模式) 封裝一個產品的構造過程,並容許按步驟構造
* 蠅量模式(享元模式) 使用一個類的一個實例能提供許多「虛擬實例」(經過保存虛擬實例的屬性集合,虛擬實例類負責行爲),目的經過共享減小實例開銷
* 中介者模式 對象之間的溝通和控制經過一箇中介完成,對象之間解耦
* 原型模式 建立給定類的實例的過程很昂貴或很複雜或者暫時不能肯定具體的實例的時候,能夠先建立對象的種類
* 訪問者模式 當想爲一個對象的組合增長新的能力,且封裝並不重要時,可使用訪問者模式

php實現參見github
相關文章
相關標籤/搜索