轉載請注明作者和出處:http://www.reibang.com/p/7f60dd5c2825
運行平臺: Windows
php版本: php7.0
針對設計模式的學習,結合自己的情況,我針對自己做了幾點安排
1.學習這玩意一靠天賦镐依,二靠機緣,三靠多看例子钝侠,實在看不懂過段時間再來看疤坝,多看其他文章的例子佣蓉,或者開源框架或者擴展包里的源碼披摄,找找看里面所用到的設計模式。
2.一定要多敲代碼勇凭,要多敲代碼行疏,要多敲代碼,要多敲代碼
- 類名通常命名為:模塊名稱”+Factory套像,比如用戶模塊就用UserFactory
- 方法通常命名為 "get"+接口名稱酿联,“create”+接口名稱,例如一個接口叫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);
輸出結果:簡單工廠優(yōu)缺點
- 幫助封裝
簡單工廠雖然簡單夺巩,但是非常友好的幫助我們實現了組件的封裝贞让,然后讓組件外部能真正面向接口編程。 - 解耦
通過簡單工廠柳譬,實現了客戶端和具體實現類的解耦喳张。
如果上面的例子,客戶端根本不知道是由誰來實現美澳,也不知道具體如何實現销部,客戶端只是通過工廠獲取它需 要的接口對象。 - 可能增加客戶端的復雜度
如果通過客戶端的參數來選擇具體實現的類制跟,那么就必須要客戶端理解每個參數的含義和功能舅桩,這會增加客戶端的使用難度,也暴露了內部實現雨膨。