工廠模式,如其名稱一樣,就是乙個工廠,用於建立產品。使用工廠模式的好處就是請求者只需要發出請求,具體的例項化過程交給工廠模式,省去了new
的過程。並且如果後期開發,類名發生變化,只需要調整工廠模式中一行new
相關**,不需要修改一大堆**。
最簡單的工廠模式,實際上就是乙個switch case
結構,通過傳入的類名,例項化相應的類。例如:
class
dbfactory
}}echo dbfactory::make('mysql');
這樣假設,新增了資料庫支援,可以直接修改make
方法即可,另外如果mysql
類被修改為mariadb
(都差不多), 不需要調整echo dbfactory::make('mysql');
,只需要修改工廠類中的case 'mysql': return 'mariadb';
連線資料庫經常使用的就是pdo
:
public
function
__construct
($dsn, $username, $passwd, $options)
這是pdo的建構函式,通過對$dsn
引數的判斷就可以連線不同的資料庫。但是對上一層來說,就和剛剛的簡單例項是一樣的了。
也就是不僅僅有工廠類,還有產品類,每個產品都有自己的工廠,這些工廠統一繼承自工廠的抽象基類(介面也行),而這些產品也統一繼承工廠的抽象基類(或者實現介面)。這樣建立產品以後可以直接呼叫產品的相關方法,而不是返回例項。
<?php
abstract
class
factory
}class
textfactory
extends
factory
}class
imgfactory
extends
factory
}inte***ce
product
class
textproduct
implements
product
}class
imgproduct
implements
product
}$tf = new textfactory();
$tf->domake();
$if = new imgfactory();
$if->domake();
這麼寫有乙個好處,假如我的文字和影象產品,輸出格式需要修改,只需要修改echo就好,其餘部分不需要修改。
<?php
class
factory
}inte***ce
product
class
textproduct
implements
product
}$tf = new factory();
$tf->make(new textproduct);
這樣寫,我的類只要實現了product
介面,就能自動的加入工廠類中,不用擔心如何呼叫show
方法。
目前大家說的比較多的三種方式
- 簡單工廠模式
- 工廠方法模式
- 抽象工廠模式
也就是factory
類提供多個make方法,這些多個make方法應該是相關或者相互依賴的。
PHP設計模式 工廠模式
使用工廠模式使得在呼叫方法時變得更容易,因為它只有乙個類和乙個方法,若沒有使用工廠模式,則要在呼叫時決定應該呼叫哪個類和哪個方法 使用工廠模式還使得未來對應用程式做改變時更加容易 比如要增加一種形狀的支援,只需要修改工廠類中的create 乙個方法,而沒有使用工廠模式,則要修改呼叫形狀的 塊。定義形...
php設計模式 工廠模式,
1,工廠模式 最大的優點是 建立物件。通俗說,以前建立物件需要使用new,現在工廠模式把這個過程封裝起來了。假設不使用工廠模式 那麼很多地方呼叫類a,就會這樣子建立乙個例項 new a 假設某天需要把a類的名稱修改,意味著很多呼叫的 都要修改。工廠模式 建立乙個工廠 乙個函式,乙個方法 來製造新的物...
PHP設計模式 工廠模式
工廠模式factory method,又稱多型性工廠模式。在工廠方法模式中,核心的工廠類不再負責所有的產品的建立,而是將具體建立的工作交給子類去做。該核心類成為乙個抽象工廠角色,僅負責給出具體工廠子類必須實現的介面,而不接觸哪乙個產品類應當被例項化這種細節。1 簡單工廠模式能夠根據外界給定的資訊,決...