韓天峰《大話PHP設計模式》聽課筆記
阿新 • • 發佈:2019-03-01
狀態 自動加載 商品 策略 上下 stat 重寫 標準庫 不可 課程主要內容
1、PHP面向對象的高級特性
2、11種設計模式
3、PSR-0,Composer,Phar等最流行的技術
目標
掌握PHP各類設計模式,並具備設計純面向對象框架和系統的能力
二、編程字體的選擇 等寬字體 Courier New,Consolas,Source Code Pro(推薦),由Adobe公司專門為程序員設計,免費開源
三、命名空間 5.3以後增加
5.5之後,類自動載入 ,以前用 __autoload(),後被廢棄,spl_autoload_register
PSR-0規範 1、命名空間必須與絕對路徑一致 2、類名首字母必須大寫 3、除入口文件外,其他‘.php’只有一個類
四、SPL標準庫
棧,SplStack,先進後出,push,pop
隊列,SplQueue,先進先出,enqueue,dequeue
最小堆,SplMinHeap,先進先出,insert,extract
固定長度的數組,SplFixedArray
鏈式操作,魔術方法 __get/__set, __call/__callStatic, __toString, __invoke
五、三種基礎設計模式
工廠模式,工廠方法或類生成對象,而不是在代碼裏直接new
單例模式,使某個類的對象只允許被創建一次
註冊樹模式,全局共享和交換對象
六、適配器模式
1、可以將截然不同的函數接口封裝成統一的API
2、實際應用舉例,數據庫操作有mysql,mysqli,pdo,可以用適配器模式統一成一致。類似的場景還有cache適配器,將memcache,redis,apc,file等不同的緩存函數統一成一致
七、策略模式
1、將一組特定的行為和算法封裝成類,以適應特定的上下文環境
2、實際舉例,假如一個電商系統,針對男女性用戶展示不同的商品類目
3、可以實現Ioc,依賴倒置、控制反轉
八、數據對象映射模式
1、是將對象和數據存儲映射起來,對一個對象的操作可映射為對數據存儲的操作
2、實現一個ORM類,對復雜的SQL語句映射成對象屬性的操作
九、觀察者模式
1、當一個對象狀態發生改變時,依賴它的對象全部會收到通知,並自動更新
2、實現了低耦合,非侵入式的通知與更新機制
十、原型模式
1、與工廠模式類似,都是用來創建對象
2、先創建好一個原型對象,然後通過clone來創建新的對象,這樣就免去了對象創建時重復的初始化操作
3、適用於大對象的創建,僅需內存拷貝即可
十一、裝飾器模式
1、decorator,可以動態地添加修改類的功能
2、一個類提供了一項功能,如果要增加或修改額外的功能,傳統的編程模式,需要寫一個子類繼承它,並重寫相應的方法
3、使用裝飾器模式,僅需在運行時添加一個裝飾器對象即可實現,可以實現最大的靈活性
array_reserve,array_rand
十二、叠代器模式
1、在不需要了解內部實現的前提下,遍歷一個聚合對象的內部元素
2、相對於傳統的編程模式,可以隱藏遍歷元素所需要的操作
\Iterator
十三、代理模式
1、在客戶端與實體之間建立一個代理對象(proxy),客戶端對實體操作全部委派給代理對象,隱藏實體的具體實現細節
2、Proxy還可以與業務代碼分離,部署到另外的服務器,業務代碼中通過RPC來委派任務
十四、面向對象設計的基本原則
1、單一職責:一個類只完成一個功能
2、開放封閉:一個類應該是可擴展的,不可修改的
3、依賴倒置:一個類不應該強依賴與另一個類,每個類對於另外一個類都是可替換的
4、配置化:盡可能使用配置,不要硬編碼
5、面向接口編程:只需要關心接口,不需要關心實現
配置與設計模式
1、使用ArrayAccess實現配置文件的自動加載
韓天峰《大話PHP設計模式》聽課筆記