工廠模式(factory pattern)
工廠模式,是用工廠方法代替new操作的一種模式。其實也可以將其理解成為乙個建立物件的工具類。在工廠模式中,我們在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用乙個共同的介面來指向新建立的物件。
乙個呼叫者想建立乙個物件,只要知道其名稱就可以了。
擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以。
遮蔽產品的具體實現,呼叫者只關心產品的介面。
每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。
主要解決介面選擇的問題。
我們明確地計畫不同條件下建立不同例項時。
日誌記錄器:記錄可能記錄到本地硬碟、系統事件、遠端伺服器等,使用者可以選擇記錄日誌到什麼地方。
資料庫訪問,當使用者不知道最後系統採用哪一類資料庫,以及資料庫可能有變化時。
設計乙個連線伺服器的框架,需要三個協議,"pop3"、"imap"、"http",可以把這三個作為產品類,共同實現乙個介面。
#介面類iapi.php
inte***ce iapi
#業務類 classa.php
class classa implements iapi
} #業務類 classb.php
class classb implements iapi
} #api呼叫 index.php
class factory_demoelse
$obj->draw();
} } $obj = new factory_demo();
$obj ->index(2);
實現效果
2.抽象工廠模式(abstract factory pattern)
抽象工廠模式(abstract factory pattern)是圍繞乙個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。
在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供物件。
當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。
產品族擴充套件非常困難,要增加乙個系列的某一產品,既要在抽象的 creator 裡加**,又要在具體的裡面加**。
主要解決介面選擇的問題。
系統的產品有多於乙個的產品族,而系統只消費其中某一族的產品。
qq 換**,一整套一起換。
生成不同作業系統的程式。
**的產品類別
需要完整**這裡
php抽象工廠模式
php抽象工廠模式簡單介紹 1.工廠模式就相當於是乙個超級工廠 2.抽象工廠模式,每個工廠只負責建立乙個物件不需要我們指定相關的類 3.物件導向的開閉原則,可以增加類但是盡量不要去修改類 我們下面看下上一節簡單工廠模式的 inte ce shape 實現產品的具體類 class rectangle ...
抽象工廠模式 抽象工廠模式
抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...
php之工廠模式和抽象工廠
最近在看工廠模式和抽象工廠模式,把深入php那本書的這一塊看了兩遍,可還是迷迷糊糊的,於是去問了度娘,我覺得有篇博文裡這麼說的很有道理 工廠方法 工廠方法是針對每一種產品提供乙個工廠類。通過不同的工廠例項來建立不同的產品例項。在同一等級結構中,支援增加任意產品。抽象工廠 抽象工廠是應對產品族概念的。...