PHP物件導向 工廠 抽象工廠模式

2021-08-28 12:54:50 字數 1567 閱讀 2795

工廠模式(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那本書的這一塊看了兩遍,可還是迷迷糊糊的,於是去問了度娘,我覺得有篇博文裡這麼說的很有道理 工廠方法 工廠方法是針對每一種產品提供乙個工廠類。通過不同的工廠例項來建立不同的產品例項。在同一等級結構中,支援增加任意產品。抽象工廠 抽象工廠是應對產品族概念的。...