PHP五種常用的設計模式 工廠模式

2021-07-04 10:28:43 字數 2175 閱讀 2352

一直對設計模式有一種敬畏之心,每次想要看設計模式的時候就會想到erich gammarichard helmralph johnsonjohn vlissides的黑皮《設計模式》,基本都望而止步,要把那本書看完可不是一時半會的,而且在沒有專案經驗的情況下,個人感覺基本都是紙上談兵。

今天在ibm developerworks上看到一篇文章將php中常用的五種設計模式,感覺還不錯,而且只有五種五種五種(重要的強調三遍)!先從簡單的入手,把這五種消滅了再說。以後慢慢學習其他的設計模式。

工廠模式(factory pattern

工廠這個詞的使用是非常形象,字面意思可以這樣認為,這種模式下,我們有乙個工廠,這個工廠生產很多一種或者幾種產品(其實多種的情況是覆蓋了一種的),但是每個產品怎麼生產和包裝的我們不知道,其實我們也不需要知道,知道的越多你就越迷糊,以後你的行為就受制於太多雜事,也就是我們常說的耦合度太高,因此我們就將所有的事情交給工廠負責,我們只用告訴工廠需要什麼,工廠把產品交付給你就是了。一旦產品的工藝發生改變,工廠負責就好,你使用該產品的工藝不受影響。因此工廠模式可以大大的降低系統的耦合度,增強系統的穩定性,當然也會提高**的復用率。

在實際的程式設計中,工廠相當於乙個對外的介面,那麼這個介面的返回型別是確定的,那麼我們怎麼通過這個工廠來生產不同的產品發回給客戶呢?很簡單,做乙個所有產品的「模子」就可以,這個「模子」有每個產品的所有特徵,但是不能用,需要具體的產品實現這些特性,就是我們常說的inte***ce

使用類圖表示如下:

php的實現

<?php 

/*** created by phpstorm.

* user: defei

* date: 2015/8/8

* time: 16:14

*/inte***ce product

<?php 

/*** created by phpstorm.

* user: defei

* date: 2015/8/8

* time: 16:16

*/class

producta

implements

product

}

<?php 

/*** created by phpstorm.

* user: defei

* date: 2015/8/8

* time: 16:17

*/class

productb

implements

product

}

<?php 

/*** created by phpstorm.

* user: defei

* date: 2015/8/8

* time: 16:18

*/class productfactory

}

測試

產品ab已經設計好了,工廠也建好了,下一步就是測試一下這個工廠對的生產能力如何。

<?php 

/*** created by phpstorm.

* user: defei

* date: 2015/8/8

* time: 16:20

*/include

'productfactory.php';

include

'product.php';

include

'producta.php';

include

'productb.php';

$factory = new productfactory();

echo

$factory->factory('producta')->getname().php_eol;

echo

$factory->factory('productb')->getname();

輸出結果如下:

五種常見的 PHP 設計模式

設計模式對於每個人都非常有用 本片博文 自 觀察者模式為您提供了避免元件之間緊密耦合的另一種方法。該模式非常簡單 乙個物件通過新增乙個方法 該方法允許另乙個物件,即 觀察者 註冊自己 使本身變得可觀察。當可觀察的物件更改時,它會將訊息傳送到已註冊的觀察者。這些觀察者使用該資訊執行的操作與可觀察的物件...

設計模式 工廠模式(簡單工廠模式和方法工廠模式)

一 簡單工廠模式 簡單工廠模式概述 又叫靜態工廠方法模式,它定義乙個具體的工廠類負責建立一些類的例項 優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責 缺點 這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護 動物類 ...

設計模式 工廠模式(五)

軟體領域中的設計模式的重要性不言而喻。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型。雖然知道這些特性的定義但是並沒有做到真正的理解,這樣特性有什麼作用?用於什麼場合中等等問題,帶著疑問開始學習設計模式,主要參考 大話設計模式 和 設計模式 可復用物件導向軟體的基礎 兩本書。工廠方...