摘要:工廠模式概念工廠模式是一種類,它具有為您創建對象的某些方法。使用該工廠的所有代碼會自動更改。
工廠模式概念
工廠模式是一種類,它具有為您創建對象的某些方法。您可以使用工廠類創建對象,而不直接使用 new。這樣,如果您想要更改所創建的對象類型,只需更改該工廠即可。使用該工廠的所有代碼會自動更改。
3中不同的工廠模式1.簡單工廠模式(靜態工廠模式):通過靜態方法來創建對象
2.工廠模式:定義一個對象接口,讓子類來決定具體的對象實例化
3.抽象工廠模式:使用對象組合來,對象的創建被實現在工廠接口所暴露的出來的方法
/** * 簡單工廠模式:通過靜態方法來實現對象創建 * 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();//結果輸出 i want to coffee echo "
"; $woman = DrinkStore::orderCola(); $woman->buy();//結果輸出 i want to cola
/** * 工廠模式:通過定義一個對象的接口,讓子類來實現對象創建 * 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();//結果輸出 i want to coffee echo "
"; $cola_factory = new ColaFactory(); $woman = $cola_factory->create(); $woman->buy();//結果輸出 i want to cola
/** * 抽象工廠模式:提供一個創建一系列的相關的或者相互依賴的對象接口 * 注意:這里和工廠方法的區別是:一系列,而工廠方法則是一個 * 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();設計原則
1.多用組合,少用繼承
2.針對接口編程,不針對實現編程
3.為交互對象之間的松耦合設計而努力
4.類應該對擴展開發,對修改關閉
5.依賴抽象,不要依賴具體類
1.所有工廠都是用來封裝對象的創建
2.簡單工廠,雖然不是真正的設計模式,但仍不失為一種簡單的方法,可以將客戶程序從具體的類中解耦
3.工廠方法使用繼承,把對象的創建委托給子類,子類實現工廠方法來創建對象
4.抽象工廠使用對象組合,對象的創建被是現在工廠接口所暴露出來的地方中
5.所用工廠模式都在通過減少應用程序具體類之間的依賴所促進松耦合
6.工廠方法允許類將實例化延遲到子類中
7.抽象工廠創建相關的對象家族,而不需要依賴他們的具體類
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22536.html
摘要:工廠模式其實可以劃分為簡單工廠模式工廠方法模式抽象工廠模式等。簡單工廠模式介紹簡單工廠模式又稱為靜態工廠方法模式,它屬于類創建型模式。此模式是對工廠方法模式的進一步擴展。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試常考之設計模式——工廠模式周三:PHP面試常考之設計模式——建造者模式周五:PHP...
摘要:但本質是,簡單工廠并未嚴格遵循設計模式的開閉原則,當需要增加新產品時也需要修改工廠代碼。但是工廠方法則嚴格遵守開閉原則,模式只負責抽象工廠接口,具體工廠交給客戶去擴展。 最近開展了三次設計模式的公開課,現在來總結一下設計模式在PHP中的應用,這是第二篇創建型模式之工廠模式。 設計模式的一般介紹在第一篇文章講了,這里就不重復。 工廠模式 實現:定義一個用于創建對象的接口,讓子類決定實...
摘要:的設計模式有很多種,本文取最簡單的三種模式工廠模式單例模式和注冊樹模式進行簡單的講解。文件創建完后,咱們回到單元測試文件文件再執行一下單元測試命令發現,也能返回成功,這樣的話我們就能很方便的修改任何驅動了。 php 設計模式之工廠模式、單例模式、注冊樹模式 在軟件工程中,創建型設計模式承擔著對象創建的職責,嘗試創建適合程序上下文的對象,對象創建設計模式的產生是由于軟件工程設計的問題,具...
摘要:根據抽象程度的不同,工廠模式分為三種簡單工廠模式工廠方法模式抽象工廠模式講解簡單工廠模式簡單工廠模式又稱靜態工廠方法模式,之所以可以這么說,是因為簡單工廠模式是通過一個靜態方法來創建對象的。他可以解決簡單工廠模式中的封閉開放原則問題。 概念 工廠模式是我們最常用的實例化對象模式,是用工廠方法代替new操作的一種模式。 使用工廠模式的好處是,如果你想要更改所實例化的類名等,則只需更改該工...
摘要:工廠模式由工廠類根據參數來決定創建出哪一種產品類的實例。工廠類是指包含了一個專門用來創建其他對象的方法的類。工廠模式的最主要作用就是對象創建的封裝簡化創建對象操作。 ### 工廠模式: 由工廠類根據參數來決定創建出哪一種產品類的實例。工廠類是指包含了一個專門用來創建其他對象的方法的類。所謂按需分配,傳入參數進行選擇,返回具體的類。工廠模式的最主要作用就是對象創建的封裝、簡化創建對象操作...
摘要:連接郵件服務器的類可以連接郵件服務器的方法有,此時可以寫一個工廠類負責實例化這幾種連接方法,如果某一天對方增加了連接方法,那么直接在工廠類里做相應的修改即可。擴展性高,如果想增加一個產品,只要擴展一個工廠類或者是修改工廠的生產過程即可。 定義 工廠模式的使用頻率比較高。它的定義為:定義一個類,該類主要負責系統的去實例化一些其它的類。通俗點說就是,你告訴我你需要哪個類的實例即可,其它的你...
閱讀 3645·2021-11-23 09:51
閱讀 1992·2021-11-16 11:42
閱讀 3238·2021-11-08 13:20
閱讀 1097·2019-08-30 15:55
閱讀 2206·2019-08-30 10:59
閱讀 1241·2019-08-29 14:04
閱讀 1023·2019-08-29 12:41
閱讀 2017·2019-08-26 12:22