一.單例模式
單例模式顧名思義铺峭,就是只有一個實例纱兑。作為對象的創(chuàng)建模式因俐, 單例模式確保某一個類只有一個實例榴嗅,而且自行實例化并向整個系統(tǒng)提供這個實例妄呕。
單例模式的要點有三個:
1.一是某個類只能有一個實例;
2.二是它必須自行創(chuàng)建這個實例嗽测;
3.三是它必須自行向整個系統(tǒng)提供這個實例绪励。
為什么要使用PHP單例模式:
- php的應(yīng)用主要在于數(shù)據(jù)庫應(yīng)用, 一個應(yīng)用中會存在大量的數(shù)據(jù)庫操作, 在使用面向?qū)ο蟮姆绞介_發(fā)時, 如果使用單例模式, 則可以避免大量的new 操作消耗的資源,還可以減少數(shù)據(jù)庫連接這樣就不容易出現(xiàn) too many connections情況肿孵。
- 如果系統(tǒng)中需要有一個類來全局控制某些配置信息, 那么使用單例模式可以很方便的實現(xiàn). 這個可以參看zend Framework的FrontController部分。
- 在一次頁面請求中, 便于進(jìn)行調(diào)試, 因為所有的代碼(例如數(shù)據(jù)庫操作類db)都集中在一個類中, 我們可以在類中設(shè)置鉤子, 輸出日志疏魏,從而避免到處var_dump, echo停做。
二.簡單工廠模式
①抽象基類:類中定義抽象一些方法,用以在子類中實現(xiàn)
②繼承自抽象基類的子類:實現(xiàn)基類中的抽象方法
③工廠類:用以實例化所有相對應(yīng)的子類
工廠模式 :
以交通工具為例子:要求請既可以定制交通工具大莫,又可以定制交通工具生產(chǎn)的過程
定制交通工具
1.1定義一個接口蛉腌,里面包含交工工具的方法(啟動 運行 停止)
1.2讓飛機(jī),汽車等類去實現(xiàn)他們
定制工廠(通上類似)
1.1定義一個接口只厘,里面包含交工工具的制造方法(啟動 運行 停止)
1.2分別寫制造飛機(jī)烙丛,汽車的工廠類去繼承實現(xiàn)這個接口
三.觀察者模式
觀察者模式屬于行為模式,是定義對象間的一種一對多的依賴關(guān)系羔味,以便當(dāng)一個對象的狀態(tài)發(fā)生改變時河咽,所有依 賴于它的對象都得到通知并自動刷新。它完美的將觀察者對象和被觀察者對象分離介评】獗保可以在獨立的對象(主體)中維護(hù)一個對主體感興趣的依賴項(觀察器)列表。 讓所有觀察器各自實現(xiàn)公共的 Observer 接口们陆,以取消主體和依賴性對象之間的直接依賴關(guān)系寒瓦。
策略模式
在此模式中,算法是從復(fù)雜類提取的坪仇,因而可以方便地替換杂腰。例如,如果要更改搜索引擎中排列頁的方法椅文,則策略模式是一個不錯的選擇喂很。思考一下搜索引擎的幾個部分 —— 一部分遍歷頁面,一部分對每頁排列皆刺,另一部分基于排列的結(jié)果排序少辣。在復(fù)雜的示例中,這些部分都在同一個類中羡蛾。通過使用策略模式漓帅,您可將排列部分放入另一個類中,以便更改頁排列的方式痴怨,而不影響搜索引擎的其余代碼忙干。
策略模式非常適合復(fù)雜數(shù)據(jù)管理系統(tǒng)或數(shù)據(jù)處理系統(tǒng),二者在數(shù)據(jù)篩選浪藻、搜索或處理的方式方面需要較高的靈活性