成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

php之工廠模式

tainzhi / 2009人閱讀

摘要:工廠模式概念工廠模式是一種類(lèi),它具有為您創(chuàng)建對(duì)象的某些方法。使用該工廠的所有代碼會(huì)自動(dòng)更改。

工廠模式概念

工廠模式是一種類(lèi),它具有為您創(chuàng)建對(duì)象的某些方法。您可以使用工廠類(lèi)創(chuàng)建對(duì)象,而不直接使用 new。這樣,如果您想要更改所創(chuàng)建的對(duì)象類(lèi)型,只需更改該工廠即可。使用該工廠的所有代碼會(huì)自動(dòng)更改。

3中不同的工廠模式

1.簡(jiǎn)單工廠模式(靜態(tài)工廠模式):通過(guò)靜態(tài)方法來(lái)創(chuàng)建對(duì)象
2.工廠模式:定義一個(gè)對(duì)象接口,讓子類(lèi)來(lái)決定具體的對(duì)象實(shí)例化
3.抽象工廠模式:使用對(duì)象組合來(lái),對(duì)象的創(chuàng)建被實(shí)現(xiàn)在工廠接口所暴露的出來(lái)的方法

代碼實(shí)例
/**
 * 簡(jiǎn)單工廠模式:通過(guò)靜態(tài)方法來(lái)實(shí)現(xiàn)對(duì)象創(chuàng)建
 * Interface Drink
 */
interface Drink{
    public function buy();
}

class Coffee implements Drink {

    public function buy(){
        echo "i want to coffee";
    }

}

class Cola implements Drink{

    public function buy()
    {
        echo "i want to cola";
    }

}

class DrinkStore{

    public static function orderCoffee(){
        return new Coffee();
    }

    public static function  orderCola(){
         return new Cola();
    }
}

$man = DrinkStore::orderCoffee();
$man->buy();//結(jié)果輸出 i want to coffee
echo "
"; $woman = DrinkStore::orderCola(); $woman->buy();//結(jié)果輸出 i want to cola
/**
 * 工廠模式:通過(guò)定義一個(gè)對(duì)象的接口,讓子類(lèi)來(lái)實(shí)現(xiàn)對(duì)象創(chuàng)建
 * Interface Drink
 */
interface Drink{
    public function buy();
}

class Coffee implements Drink {

    public function buy(){
        echo "i want to coffee";
    }

}

class Cola implements Drink{

    public function buy()
    {
        echo "i want to cola";
    }

}

interface CreateDrink{
    public function create();
}

class CoffeeFactory implements CreateDrink{
    public function create()
    {
        return new Coffee();
    }
}

class ColaFactory implements CreateDrink{
    public function create()
    {
        return new Cola();
    }
}


$coffee_factory = new CoffeeFactory();
$man = $coffee_factory->create();
$man->buy();//結(jié)果輸出 i want to coffee
echo "
"; $cola_factory = new ColaFactory(); $woman = $cola_factory->create(); $woman->buy();//結(jié)果輸出 i want to cola
/**
 * 抽象工廠模式:提供一個(gè)創(chuàng)建一系列的相關(guān)的或者相互依賴(lài)的對(duì)象接口
 * 注意:這里和工廠方法的區(qū)別是:一系列,而工廠方法則是一個(gè)
 * Interface Drink
 */
interface Drink{
    public function buy();
}

class CoffeeHot implements Drink {

    public function buy(){
        echo "i want to hot coffee";
    }

}

class CoffeeCold implements Drink {

    public function buy(){
        echo "i want to cold coffee";
    }

}

class ColaHot implements Drink{

    public function buy()
    {
        echo "i want to hot cola";
    }

}

class ColaCold implements Drink{

    public function buy()
    {
        echo "i want to cold cola";
    }

}

interface SuperFactory{
    public function createHot();
    public function createCold();
}

class CoffeeFactory implements SuperFactory {
    public function createHot()
    {
        return new CoffeeHot();
    }

    public function createCold()
    {
        return new CoffeeCold();
    }
}

class ColaFactory implements SuperFactory{
    public function createCold()
    {
        return new ColaCold();
    }

    public function createHot()
    {
        return new ColaHot();
    }
}

$coffee_factory = new CoffeeFactory();
$man = $coffee_factory->createHot();
$man->buy();
設(shè)計(jì)原則

1.多用組合,少用繼承
2.針對(duì)接口編程,不針對(duì)實(shí)現(xiàn)編程
3.為交互對(duì)象之間的松耦合設(shè)計(jì)而努力
4.類(lèi)應(yīng)該對(duì)擴(kuò)展開(kāi)發(fā),對(duì)修改關(guān)閉
5.依賴(lài)抽象,不要依賴(lài)具體類(lèi)

要點(diǎn)

1.所有工廠都是用來(lái)封裝對(duì)象的創(chuàng)建
2.簡(jiǎn)單工廠,雖然不是真正的設(shè)計(jì)模式,但仍不失為一種簡(jiǎn)單的方法,可以將客戶(hù)程序從具體的類(lèi)中解耦
3.工廠方法使用繼承,把對(duì)象的創(chuàng)建委托給子類(lèi),子類(lèi)實(shí)現(xiàn)工廠方法來(lái)創(chuàng)建對(duì)象
4.抽象工廠使用對(duì)象組合,對(duì)象的創(chuàng)建被是現(xiàn)在工廠接口所暴露出來(lái)的地方中
5.所用工廠模式都在通過(guò)減少應(yīng)用程序具體類(lèi)之間的依賴(lài)所促進(jìn)松耦合
6.工廠方法允許類(lèi)將實(shí)例化延遲到子類(lèi)中
7.抽象工廠創(chuàng)建相關(guān)的對(duì)象家族,而不需要依賴(lài)他們的具體類(lèi)

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22536.html

相關(guān)文章

  • PHP面試???em>之設(shè)計(jì)模式——工廠模式

    摘要:工廠模式其實(shí)可以劃分為簡(jiǎn)單工廠模式工廠方法模式抽象工廠模式等。簡(jiǎn)單工廠模式介紹簡(jiǎn)單工廠模式又稱(chēng)為靜態(tài)工廠方法模式,它屬于類(lèi)創(chuàng)建型模式。此模式是對(duì)工廠方法模式的進(jìn)一步擴(kuò)展。 你好,是我琉憶,PHP程序員面試筆試系列圖書(shū)的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試常考之設(shè)計(jì)模式——工廠模式周三:PHP面試??贾O(shè)計(jì)模式——建造者模式周五:PHP...

    Jiavan 評(píng)論0 收藏0
  • 優(yōu)才公開(kāi)課筆記:php設(shè)計(jì)模式 (二)工廠模式

    摘要:但本質(zhì)是,簡(jiǎn)單工廠并未嚴(yán)格遵循設(shè)計(jì)模式的開(kāi)閉原則,當(dāng)需要增加新產(chǎn)品時(shí)也需要修改工廠代碼。但是工廠方法則嚴(yán)格遵守開(kāi)閉原則,模式只負(fù)責(zé)抽象工廠接口,具體工廠交給客戶(hù)去擴(kuò)展。 最近開(kāi)展了三次設(shè)計(jì)模式的公開(kāi)課,現(xiàn)在來(lái)總結(jié)一下設(shè)計(jì)模式在PHP中的應(yīng)用,這是第二篇?jiǎng)?chuàng)建型模式之工廠模式。 設(shè)計(jì)模式的一般介紹在第一篇文章講了,這里就不重復(fù)。 工廠模式 實(shí)現(xiàn):定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)...

    aisuhua 評(píng)論0 收藏0
  • php 設(shè)計(jì)模式工廠模式、單例模式、注冊(cè)樹(shù)模式

    摘要:的設(shè)計(jì)模式有很多種,本文取最簡(jiǎn)單的三種模式工廠模式單例模式和注冊(cè)樹(shù)模式進(jìn)行簡(jiǎn)單的講解。文件創(chuàng)建完后,咱們回到單元測(cè)試文件文件再執(zhí)行一下單元測(cè)試命令發(fā)現(xiàn),也能返回成功,這樣的話(huà)我們就能很方便的修改任何驅(qū)動(dòng)了。 php 設(shè)計(jì)模式之工廠模式、單例模式、注冊(cè)樹(shù)模式 在軟件工程中,創(chuàng)建型設(shè)計(jì)模式承擔(dān)著對(duì)象創(chuàng)建的職責(zé),嘗試創(chuàng)建適合程序上下文的對(duì)象,對(duì)象創(chuàng)建設(shè)計(jì)模式的產(chǎn)生是由于軟件工程設(shè)計(jì)的問(wèn)題,具...

    liangzai_cool 評(píng)論0 收藏0
  • PHP設(shè)計(jì)模式工廠模式

    摘要:根據(jù)抽象程度的不同,工廠模式分為三種簡(jiǎn)單工廠模式工廠方法模式抽象工廠模式講解簡(jiǎn)單工廠模式簡(jiǎn)單工廠模式又稱(chēng)靜態(tài)工廠方法模式,之所以可以這么說(shuō),是因?yàn)楹?jiǎn)單工廠模式是通過(guò)一個(gè)靜態(tài)方法來(lái)創(chuàng)建對(duì)象的。他可以解決簡(jiǎn)單工廠模式中的封閉開(kāi)放原則問(wèn)題。 概念 工廠模式是我們最常用的實(shí)例化對(duì)象模式,是用工廠方法代替new操作的一種模式。 使用工廠模式的好處是,如果你想要更改所實(shí)例化的類(lèi)名等,則只需更改該工...

    imtianx 評(píng)論0 收藏0
  • PHP 設(shè)計(jì)模式工廠模式 (靜態(tài)工廠模式)

    摘要:工廠模式由工廠類(lèi)根據(jù)參數(shù)來(lái)決定創(chuàng)建出哪一種產(chǎn)品類(lèi)的實(shí)例。工廠類(lèi)是指包含了一個(gè)專(zhuān)門(mén)用來(lái)創(chuàng)建其他對(duì)象的方法的類(lèi)。工廠模式的最主要作用就是對(duì)象創(chuàng)建的封裝簡(jiǎn)化創(chuàng)建對(duì)象操作。 ### 工廠模式: 由工廠類(lèi)根據(jù)參數(shù)來(lái)決定創(chuàng)建出哪一種產(chǎn)品類(lèi)的實(shí)例。工廠類(lèi)是指包含了一個(gè)專(zhuān)門(mén)用來(lái)創(chuàng)建其他對(duì)象的方法的類(lèi)。所謂按需分配,傳入?yún)?shù)進(jìn)行選擇,返回具體的類(lèi)。工廠模式的最主要作用就是對(duì)象創(chuàng)建的封裝、簡(jiǎn)化創(chuàng)建對(duì)象操作...

    kviccn 評(píng)論0 收藏0
  • PHP 設(shè)計(jì)模式二——工廠模式

    摘要:連接郵件服務(wù)器的類(lèi)可以連接郵件服務(wù)器的方法有,此時(shí)可以寫(xiě)一個(gè)工廠類(lèi)負(fù)責(zé)實(shí)例化這幾種連接方法,如果某一天對(duì)方增加了連接方法,那么直接在工廠類(lèi)里做相應(yīng)的修改即可。擴(kuò)展性高,如果想增加一個(gè)產(chǎn)品,只要擴(kuò)展一個(gè)工廠類(lèi)或者是修改工廠的生產(chǎn)過(guò)程即可。 定義 工廠模式的使用頻率比較高。它的定義為:定義一個(gè)類(lèi),該類(lèi)主要負(fù)責(zé)系統(tǒng)的去實(shí)例化一些其它的類(lèi)。通俗點(diǎn)說(shuō)就是,你告訴我你需要哪個(gè)類(lèi)的實(shí)例即可,其它的你...

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

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

0條評(píng)論

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