php設計模式總結2

來源:互聯網
上載者:User

標籤:組件   stat   外部程式   添加   關係   集合   xxxx   變化   成員變數   

策略模式:定義了演算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。封裝:把行為用介面封裝起來,我們可以把那些經常變化的部分,從當前的類中單獨取出來,用介面進行單獨的封裝。互相替換:我們封裝好了介面,通過指定不同的介面實作類別進行演算法的變化。 單例模式:

作為對象的建立模式,單例模式確保某一個類只有一個執行個體,而且自行執行個體化並向整個系統全域地提供這個執行個體。

要點:1.需要一個儲存類的唯一執行個體靜態成員變數: 

         2.建構函式和複製函數必須聲明為私人的,防止外部程式new類從而失去單例。

         3.必須提供一個訪問這個執行個體的公用的靜態方法(通常是getInstance方法),從而返回唯一執行個體的一個引用

private static $_instance;

private function __construct() { $this->_db = pg_connect(‘xxxx‘); } private function __clone() { }//覆蓋__clone()方法,禁止複製 public static function getInstance() { if(! (self::$_instance instanceof self) ) { self::$_instance = new self(); } return self::$_instance; }
 原廠模式:

 由一個工廠類根據傳入的參數,動態決定應該建立哪一個產品類(這些產品類繼承自一個父類或介面)的執行個體。

 核心思想就是:用一個單獨的工廠類去建立執行個體化的過程。

 工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該建立哪個具體類的對象.

 通過使用工廠類,外界可以從直接建立具體產品對象的尷尬 局面擺脫出來,僅僅需要負責“消費”對象就可以了。

 而不必管這些對象究竟如何建立及如何組織的.明確了各自的職責和權利,有利於整個軟體體繫結構的最佳化。

 不需要瞭解執行個體是如何工作的,只需要在工廠裡面建立它即可。

 組合模式:

 有時候又叫做部分-整體模式。常使用的情境:樹形菜單,檔案夾菜單,部門組織架構圖

 用於將對象組合成樹形結構以表示“部分-整體”的層次關係。組合模式使得使用者對單個對象和組合對象的使用具有一致性。

 組合模式定義了一個單根繼承體系,使具有截然不同職責的集合可以並肩工作。

 裝飾器模式:

 裝飾模式是在不必改變原類檔案和使用繼承的情況下,動態地擴充一個對象的功能。

 它是通過建立一個封裝對象,也就是裝飾來包裹真實的對象。

 組件對象的介面:可以給這些對象動態添加職責

  所有裝飾器的父類:需要定義一個與組件介面一致的介面,並持有一個Component對象,該對象其實就是被裝飾的對象。

  具體的裝飾器類:實現具體要向被裝飾對象添加的功能。用來裝飾具體的組件對象或者另外一個具體的裝飾器對象。

  適用情境: 

    1. 需要動態給一個對象添加功能,這些功能可以再動態撤銷。

    2. 需要增加由一些準系統的排列組合而產生的非常大量的功能,從而使繼承關係變的不現實。

    3. 當不能採用產生子類的方法進行擴充時。

       一種情況是,可能有大量獨立的擴充,為支援每一種組合將產生大量的子類,使得子類數目呈爆炸性增長。

       另一種情況可能是因為類定義被隱藏,或類定義不能用於產生子類。

php設計模式總結2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.