1. 程式人生 > >韓天峰《大話PHP設計模式》聽課筆記

韓天峰《大話PHP設計模式》聽課筆記

狀態 自動加載 商品 策略 上下 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設計模式》聽課筆記