設(shè)計(jì)模式(一):簡(jiǎn)單工廠模式

轉(zhuǎn)載請(qǐng)注明作者和出處http://www.itdecent.cn/p/7f60dd5c2825

運(yùn)行平臺(tái): Windows

php版本: php7.0


針對(duì)設(shè)計(jì)模式的學(xué)習(xí),結(jié)合自己的情況,我針對(duì)自己做了幾點(diǎn)安排

1.學(xué)習(xí)這玩意一靠天賦,二靠機(jī)緣,三靠多看例子,實(shí)在看不懂過(guò)段時(shí)間再來(lái)看,多看其他文章的例子,或者開(kāi)源框架或者擴(kuò)展包里的源碼,找找看里面所用到的設(shè)計(jì)模式。
2.一定要多敲代碼,要多敲代碼,要多敲代碼,要多敲代碼

  • 類名通常命名為:模塊名稱”+Factory,比如用戶模塊就用UserFactory
  • 方法通常命名為 "get"+接口名稱,“create”+接口名稱,例如一個(gè)接口叫UserEbi,那么方法名稱通常為,getUserEbi或者createUserEbi

代碼

class Man{
    public function getName(){
        echo "my name is laowang";
    }
}

class Women{
    public function getName(){
        echo "my name is xiaomei";
    }
}

class PersonFactory{
    public function createPerson($type){
        if($type == 'man'){
            $person = new Man();
        }elseif($type == 'women'){
            $person = new Women();
        }
        return $person;
    }
}

$type = "man";
$person = new PersonFactory();
$name = $person->createPerson($type);
$name = $name->getName();
var_dump($name);

輸出結(jié)果:

簡(jiǎn)單工廠優(yōu)缺點(diǎn)

  • 幫助封裝
    簡(jiǎn)單工廠雖然簡(jiǎn)單,但是非常友好的幫助我們實(shí)現(xiàn)了組件的封裝,然后讓組件外部能真正面向接口編程。
  • 解耦
    通過(guò)簡(jiǎn)單工廠,實(shí)現(xiàn)了客戶端和具體實(shí)現(xiàn)類的解耦。
    如果上面的例子,客戶端根本不知道是由誰(shuí)來(lái)實(shí)現(xiàn),也不知道具體如何實(shí)現(xiàn),客戶端只是通過(guò)工廠獲取它需 要的接口對(duì)象。
  • 可能增加客戶端的復(fù)雜度
    如果通過(guò)客戶端的參數(shù)來(lái)選擇具體實(shí)現(xiàn)的類,那么就必須要客戶端理解每個(gè)參數(shù)的含義和功能,這會(huì)增加客戶端的使用難度,也暴露了內(nèi)部實(shí)現(xiàn)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容