轉(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)。