工廠模式是一種類,它具有為您建立物件的某些方法。您可以使用工廠類建立物件,而不直接使用 new。這樣,如果您想要更改所建立的物件型別,只需更改該工廠即可。使用該工廠的所有**會自動更改。
1.簡單工廠模式(靜態工廠模式):通過靜態方法來建立物件
2.工廠模式:定義乙個物件介面,讓子類來決定具體的物件例項化
3.抽象工廠模式:使用物件組合來,物件的建立被實現在工廠介面所暴露的出來的方法
/**
* 簡單工廠模式:通過靜態方法來實現物件建立
* inte***ce drink
*/inte***ce drink
class coffee implements drink
}class cola implements drink
}class drinkstore
public static function ordercola()
}$man = drinkstore::ordercoffee();
$man->buy();//結果輸出 i want to coffee
echo "
";$woman = drinkstore::ordercola();
$woman->buy();//結果輸出 i want to cola
/**
* 工廠模式:通過定義乙個物件的介面,讓子類來實現物件建立
* inte***ce drink
*/inte***ce drink
class coffee implements drink
}class cola implements drink
}inte***ce createdrink
class coffeefactory implements createdrink
}class colafactory implements createdrink
}$coffee_factory = new coffeefactory();
$man = $coffee_factory->create();
$man->buy();//結果輸出 i want to coffee
echo "
";$cola_factory = new colafactory();
$woman = $cola_factory->create();
$woman->buy();//結果輸出 i want to cola
/**
* 注意:這裡和工廠方法的區別是:一系列,而工廠方法則是乙個
* inte***ce drink
*/inte***ce drink
class coffeehot implements drink
}class coffeecold implements drink
}class colahot implements drink
}class colacold implements drink
}inte***ce supe***ctory
class coffeefactory implements supe***ctory
public function createcold()
}class colafactory implements supe***ctory
public function createhot()
}$coffee_factory = new coffeefactory();
$man = $coffee_factory->createhot();
$man->buy();
1.多用組合,少用繼承
2.針對介面程式設計,不針對實現程式設計
3.為互動物件之間的松耦合設計而努力
4.類應該對擴充套件開發,對修改關閉
5.依賴抽象,不要依賴具體類
1.所有工廠都是用來封裝物件的建立
2.簡單工廠,雖然不是真正的設計模式,但仍不失為一種簡單的方法,可以將客戶程式從具體的類中解耦
3.工廠方法使用繼承,把物件的建立委託給子類,子類實現工廠方法來建立物件
4.抽象工廠使用物件組合,物件的建立被是現在工廠介面所暴露出來的地方中
5.所用工廠模式都在通過減少應用程式具體類之間的依賴所促進松耦合
6.工廠方法允許類將例項化延遲到子類中
7.抽象工廠建立相關的物件家族,而不需要依賴他們的具體類
php之工廠模式
簡單工廠模式 通過傳入不同的引數創造不同的工廠類,大大解耦了程式。現在我們簡單實現乙個計算器類,通過傳入引數和不同的運算子來實現。如下 inte ce calc class operation class operaadd extends operation implements calc clas...
PHP設計模式 工廠模式之抽象工廠模式
abstract class 2 建立ttd 抽象類 ttd 抽象類 class ttdencoder abstract class ttdencoder 3 建立contact 抽象類 contact 抽象類 class contactencoder abstract class contacte...
php設計模式之工廠模式
一直都對php的設計模式有著一種特殊的 情結 從最開始接觸到的單例模式,到經典的mvc設計模式,每次的接觸都讓我為之驚奇。買了本php設計模式在家看,發現,都是專有名詞,再加上太專業的術語,讓我沒有看下去的勇氣。無意之中逛論壇,發現乙個部落格,關於php的五種設計模式,其中就有工廠模式。看完後,第一...