一、簡單工廠模式
#特點:
1、它是一個具體的類,非介面抽象類別。有一個重要的create()方法,利用if或 switch建立產品並回傳。
2、create()方法通常是靜態的,所以也稱為靜態工廠。
缺點:
1、擴展性差(我想增加一種麵條,除了新增一個麵條產品類,還需要修改工廠類方法)。
2、不同的產品需要不同額外參數的時候 不支援。
二、工廠方法模式
模式描述:
提供一個用來建立物件的介面(工廠介面) ,讓其實作類別(工廠實作類別)決定實例化哪一個類別(產品類別),並且由該實作類別建立對應類別的實例。
模式式要素:
提供一個產品類別的介面。產品類別均要實作這個介面(也可以是abstract類,即抽象產品)。
提供一個工廠類別的介面。工廠類別均要實作這個介面(即抽象工廠)。
由工廠實作類別建立產品類別的實例。工廠實作類別應有一個方法,用來實例化產品類別。
三、抽象工廠模式
模式描述:
為建立一組相關或相互依賴的物件提供一個接口,而且無需指定他們的特定類別。
四、區別
抽象工廠模式是工廠方法模式的升級版本,他用來創建一組相關或相互依賴的物件。
它與工廠方法模式的差異就在於,工廠方法模式針對的是一個產品等級結構;而抽象工廠模式則是針對的多個產品等級結構。
在程式設計中,通常一個產品結構,表現為一個介面或抽象類,也就是說,工廠方法模式提供的所有產品都是衍生自同一個介面或抽象類,而抽象工廠模式所提供的產品則衍生自不同的介面或抽象類別。
在抽象工廠模式中,有一個產品族的概念:所謂的產品族,是指位於不同產品等級結構中功能相關聯的產品組成的家族。抽象工廠模式所提供的一系列產品就組成一個產品族;而工廠方法提供的一系列產品稱為一個等級結構。
推薦教學:Java教學
以上是java中抽象工廠模式與工廠方法模式的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!