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

2022-02-21 03:08:17 字數 2084 閱讀 7330

課程主要內容

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實現配置檔案的自動載入

2、在工廠方法中讀取配置,生成可配置化的物件

3、使用裝飾器模式實現許可權驗證,模板渲染,json串化

4、使用觀察者模式實現資料更新事件的一系列更新操作

5、使用**模式實現資料庫的主從自動切換

大話PHP設計模式

php魔術方法的使用1.工廠模式,工廠方法或者類生成物件,而不是在 中直接newclass factory 2.單例模式,使某個類的物件僅允許建立乙個 php class database 單例 return database static function getinstance else 3.註...

大話PHP設計模式筆記

針對php的設計模式進行總結記錄。一 關於命名空間 命名空間 1.命名空間介紹 2.命名空間使用 例項 test1.php檔案 namespace test1 function test test2.php檔案 namespace test2 function test test.php檔案 如果沒...

python 享元模式 大話設計模式之享元模式

享元模式可以避免大量的非常相似的類的開銷。在程式設計中,有時需要生成大量的細顆粒度的類例項來表示資料,如果能發現這些例項除了幾個引數外基本上都是相同的,如果能把那些引數移到類的例項的外面,在方法呼叫時將他們傳遞進來,就可以通過共享大幅度地減少單個例項的數目。也就是說,享元模式執行時所需要的狀態是有內...