国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP面試常考之設(shè)計(jì)模式——工廠模式

Jiavan / 3283人閱讀

摘要:工廠模式其實(shí)可以劃分為簡單工廠模式工廠方法模式抽象工廠模式等。簡單工廠模式介紹簡單工廠模式又稱為靜態(tài)工廠方法模式,它屬于類創(chuàng)建型模式。此模式是對(duì)工廠方法模式的進(jìn)一步擴(kuò)展。

你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。

本周(2019.3.11至3.15)的一三五更新的文章如下:

周一:PHP面試常考之設(shè)計(jì)模式——工廠模式
周三:PHP面試常考之設(shè)計(jì)模式——建造者模式
周五:PHP面試常考之設(shè)計(jì)模式——策略模式

今天這篇文章主要講解的是PHP面試常考的設(shè)計(jì)模式之工廠模式。工廠模式其實(shí)可以劃分為:簡單工廠模式、工廠方法模式、抽象工廠模式等。具體它們有什么區(qū)別,用途有哪些呢?以下我將進(jìn)行講解。

自己整理了一篇“設(shè)計(jì)模式需要遵守的5大原則”的文章,關(guān)注公眾號(hào):“琉憶編程庫”,回復(fù):“原則”,我發(fā)給你。
以下內(nèi)容如需轉(zhuǎn)載,請(qǐng)注明作者和出處。 1、簡單工廠模式

介紹:
簡單工廠模式又稱為靜態(tài)工廠方法(Static Factory Method)模式,它屬于類創(chuàng)建型模式。在簡單工廠模式中,可以根據(jù)參數(shù)的不同返回不同類的實(shí)例。簡單工廠模式專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。

UML圖:

說明:

CashFactory類:負(fù)責(zé)創(chuàng)建具體產(chǎn)品的實(shí)例

CashSuper類:抽象產(chǎn)品類,定義產(chǎn)品子類的公共接口

CreateCashAccept 類:具體產(chǎn)品類,實(shí)現(xiàn)Product父類的接口功能,也可添加自定義的功能

簡單工廠模式最大的優(yōu)點(diǎn)在于實(shí)現(xiàn)對(duì)象的創(chuàng)建和對(duì)象的使用分離,將對(duì)象的創(chuàng)建交給專門的工廠類負(fù)責(zé),但是其最大的缺點(diǎn)在于工廠類不夠靈活,增加新的具體產(chǎn)品需要修改工廠類的判斷邏輯代碼,而且產(chǎn)品較多時(shí),工廠方法代碼將會(huì)非常復(fù)雜。

實(shí)現(xiàn)示例:

";
  }
}
class Dog
{
  function __construct()
  {
      echo "I am Dog class 
"; } } class Factory { public static function CreateAnimal($name){ if ($name == "cat") { return new Cat(); } elseif ($name == "dog") { return new Dog(); } } } $cat = Factory::CreateAnimal("cat"); $dog = Factory::CreateAnimal("dog");

2、工廠方法模式

介紹:
工廠方法模式通過定義一個(gè)抽象的核心工廠類,并定義創(chuàng)建產(chǎn)品對(duì)象的接口,創(chuàng)建具體產(chǎn)品實(shí)例的工作延遲到其工廠子類去完成。這樣做的好處是核心類只關(guān)注工廠類的接口定義,而具體的產(chǎn)品實(shí)例交給具體的工廠子類去創(chuàng)建。當(dāng)系統(tǒng)需要新增一個(gè)產(chǎn)品是,無需修改現(xiàn)有系統(tǒng)代碼,只需要添加一個(gè)具體產(chǎn)品類和其對(duì)應(yīng)的工廠子類,是系統(tǒng)的擴(kuò)展性變得很好,符合面向?qū)ο缶幊痰拈_閉原則;

UML圖:

說明:

Product:抽象產(chǎn)品類

ConcreteProduct:具體產(chǎn)品類

Factory:抽象工廠類

ConcreteFactory:具體工廠類

工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。由于使用了面向?qū)ο蟮亩鄳B(tài)性,工廠方法模式保持了簡單工廠模式的優(yōu)點(diǎn),而且克服了它的缺點(diǎn)。在工廠方法模式中,核心的工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建工作交給子類去做。這個(gè)核心類僅僅負(fù)責(zé)給出具體工廠必須實(shí)現(xiàn)的接口,而不負(fù)責(zé)產(chǎn)品類被實(shí)例化這種細(xì)節(jié),這使得工廠方法模式可以允許系統(tǒng)在不修改工廠角色的情況下引進(jìn)新產(chǎn)品。

實(shí)現(xiàn)示例:

";
  }
  public function say(){
      echo "I am Cat class 
"; } } class Dog implements Animal { public function run(){ echo "I"m running fast
"; } public function say(){ echo "I am Dog class
"; } } abstract class Factory{ abstract static function createAnimal(); } class CatFactory extends Factory { public static function createAnimal() { return new Cat(); } } class DogFactory extends Factory { public static function createAnimal() { return new Dog(); } } $cat = CatFactory::createAnimal(); $cat->say(); $cat->run(); $dog = DogFactory::createAnimal(); $dog->say(); $dog->run();

自己整理了一篇“設(shè)計(jì)模式需要遵守的5大原則”的文章,關(guān)注公眾號(hào):“琉憶編程庫”,回復(fù):“原則”,我發(fā)給你。

3、抽象工廠模式

介紹:
抽象工廠模式提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無須指定它們具體的類。抽象工廠模式又稱為Kit模式,屬于對(duì)象創(chuàng)建型模式。

此模式是對(duì)工廠方法模式的進(jìn)一步擴(kuò)展。在工廠方法模式中,一個(gè)具體的工廠負(fù)責(zé)生產(chǎn)一類具體的產(chǎn)品,即一對(duì)一的關(guān)系,但是,如果需要一個(gè)具體的工廠生產(chǎn)多種產(chǎn)品對(duì)象,那么就需要用到抽象工廠模式了。

為了便于理解此模式,這里介紹兩個(gè)概念:

產(chǎn)品等級(jí)結(jié)構(gòu):產(chǎn)品等級(jí)結(jié)構(gòu)即產(chǎn)品的繼承結(jié)構(gòu),如一個(gè)抽象類是電視機(jī),其子類有海爾電視機(jī)、海信電視機(jī)、TCL電視機(jī),則抽象電視機(jī)與具體品牌的電視機(jī)之間構(gòu)成了一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),抽象電視機(jī)是父類,而具體品牌的電視機(jī)是其子類。

產(chǎn)品族 :在抽象工廠模式中,產(chǎn)品族是指由同一個(gè)工廠生產(chǎn)的,位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中的一組產(chǎn)品,如海爾電器工廠生產(chǎn)的海爾電視機(jī)、海爾電冰箱,海爾電視機(jī)位于電視機(jī)產(chǎn)品等級(jí)結(jié)構(gòu)中,海爾電冰箱位于電冰箱產(chǎn)品等級(jí)結(jié)構(gòu)中。

UML類圖:

說明:
具體類圖的功能可以看UML圖的說明

實(shí)現(xiàn)示例:

";
  }

  public function use()
  {
      echo "I"m watching TV 
"; } } interface PC{ public function work(); public function play(); } class LenovoPc implements PC { public function work() { echo "I"m working on a Lenovo computer
"; } public function play() { echo "Lenovo computers can be used to play games
"; } } abstract class Factory{ abstract public static function createPc(); abstract public static function createTv(); } class ProductFactory extends Factory { public static function createTV() { return new HaierTv(); } public static function createPc() { return new LenovoPc(); } } $newTv = ProductFactory::createTV(); $newTv->open(); $newTv->use(); $newPc = ProductFactory::createPc(); $newPc->work(); $newPc->play();

自己編寫的《PHP程序員面試筆試寶典》《PHP程序員面試筆試真題解析》書籍,已在各大電商平臺(tái)銷售,兩本可以幫助你更快更好的拿到offer的書

更多PHP相關(guān)的面試知識(shí)、考題可以關(guān)注公眾號(hào)獲取:琉憶編程庫

對(duì)本文有什么問題或建議都可以進(jìn)行留言,我將不斷完善追求極致,感謝你們的支持。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/30997.html

相關(guān)文章

  • PHP面試考之設(shè)計(jì)模式——建造者模式

    摘要:你好,是我琉憶,程序員面試筆試系列圖書的作者。建造者模式介紹建造者模式又名生成器模式,是一種對(duì)象構(gòu)建模式。表示被構(gòu)造的復(fù)雜對(duì)象。創(chuàng)建該產(chǎn)品的內(nèi)部表示并定義它的裝配過程。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試常考之設(shè)計(jì)模式——工廠模式周三:PHP面試常考之設(shè)計(jì)模式——建造者模式周五:PHP面...

    alexnevsky 評(píng)論0 收藏0
  • PHP面試考之設(shè)計(jì)模式——策略模式

    摘要:策略模式介紹策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化。使用策略模式的好處策略模式提供了管理相關(guān)的算法族的辦法。使用策略模式可以避免使用多重條件轉(zhuǎn)移語句。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試常考之設(shè)計(jì)模式——工...

    Drinkey 評(píng)論0 收藏0
  • PHP面試考之網(wǎng)絡(luò)協(xié)議

    摘要:是為互聯(lián)網(wǎng)服務(wù)的協(xié)議族,它是網(wǎng)絡(luò)通信協(xié)議的統(tǒng)稱,由和等協(xié)議組成。預(yù)告本周五更新面試常考題之會(huì)話控制和網(wǎng)絡(luò)協(xié)議,敬請(qǐng)期待。以上內(nèi)容摘自程序員面試筆試寶典書籍,該書已在天貓京東當(dāng)當(dāng)?shù)入娚唐脚_(tái)銷售。 你好,是我琉憶,歡迎您來到PHP面試專欄。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面試常考之會(huì)話控制周三:PHP面試常考之網(wǎng)絡(luò)協(xié)議周五:PHP面試常考題之會(huì)話控...

    joywek 評(píng)論0 收藏0
  • PHP面試考之數(shù)據(jù)結(jié)構(gòu)——鏈表的概念

    摘要:一鏈表鏈表是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的指針。指向整個(gè)列表的指針可以被稱作訪問指針。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.18至3.22)的一三五更新的文章如下: 周一:PHP面試常考之?dāng)?shù)據(jù)結(jié)構(gòu)——鏈表的概念周三:PHP面試常考之?dāng)?shù)據(jù)結(jié)構(gòu)——棧和隊(duì)列周五:PHP面試常考之...

    dreamans 評(píng)論0 收藏0
  • PHP面試考之會(huì)話控制

    摘要:一的會(huì)話也稱為。如果啟動(dòng)會(huì)話成功,則函數(shù)返回,否則返回。會(huì)話啟動(dòng)后就可以載入該會(huì)話已經(jīng)注冊(cè)的會(huì)話變量以便使用。但數(shù)組創(chuàng)建的在會(huì)話結(jié)束后就會(huì)失效。預(yù)告本周三更新面試常考之網(wǎng)絡(luò)協(xié)議,敬請(qǐng)期待。 你好,是我琉憶,歡迎您來到PHP面試專欄。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面試常考之會(huì)話控制周三:PHP面試常考之網(wǎng)絡(luò)協(xié)議周五:PHP面試常考題之會(huì)話控制和...

    lsxiao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<