簡單工廠模式是由乙個工廠物件決定建立哪一種產品類的例項。使用工廠類封裝了建立產品類例項物件的行為,使用者只需告訴工廠類獲取哪個例項,工廠類建立並返回使用者所需的例項。
//產品介面
public
inte***ce
fruit
//產品1
public
class
implements
fruit
}//產品2
public
class
banana
implements
fruit
}//產品工廠類
public
class
fruitfactory
}}
優點工廠類封裝建立物件的行為,使用者不需要知道實現類;
解耦;
缺點:如果增加新產品類時,需要修改工廠類,違背「開閉原則」。
如果產品類不多,使用乙個工廠類可以完成工作;但如果需要擴充套件乙個新的產品類,使用簡單工廠應該如何解決?
如果建立新的產品類,然後將例項化物件的行為新增到原來的工廠類中。這種方式違反了「開閉原則」——當我們擴充套件程式時,不應修改原有的類、模組或函式,而是通過擴充套件進行實現。
工廠方法是簡單工廠的進一步擴充套件。所以,在簡單工廠模式的基礎上,新增乙個工廠介面或工廠抽象類,其定義了獲取產品類的抽象方法,將建立產品的具體實現延遲到工廠子類中實現。這樣,當需要擴充套件新的產品類,不需要在原工廠類中修改,而是擴充套件新的工廠類來實現產品類的建立。
//工廠介面
public
inte***ce
factory
//工廠實現1
public
class
fruitfactory
implements
factory}}
//工廠實現2
public
class
newfruitfactory
implements
factory
return null;}}
//產品介面
public
inte***ce
fruit
//產品1
public
class
implements
fruit
}//產品2
public
class
banana
implements
fruit
}//產品3
public
class
orange
implements
fruit
}
抽象工廠模式是工廠方法模式的公升級版本,工廠方法模式只生產乙個等級的產品,而抽象工廠模式可生產多個等級的產品。使用抽象工廠模式一般要滿足以下條件。
舉個例子,比如電子產品有不同的品牌(如華為、iphone;乙個品牌對應乙個產品族),不同品牌各自擁有電腦、手機產品。使用工廠方法模式,乙個工廠物件只能生產一種等級的產品(電腦或手機);使用抽象工廠模式,乙個工廠物件可以生產多種產品(電腦和手機)。下面使用圖例說明
抽象工廠模式除了具有工廠方法模式的優點外,其他主要優點如下。
其缺點是:當產品族中需要增加乙個新的產品時,所有的工廠類都需要進行修改,不滿足開閉原則。
抽象工廠介面、具體工廠類
//抽象工廠介面
public
inte***ce
abstractfactory
//產品簇1工廠類
public
class
huaweifactory
implements
abstractfactory
return null;
}@override
public huawei getcomputer
(string type)
return null;}}
//產品簇2工廠類
public
class
iphonefactory
implements
abstractfactory
return null;
}@override
public iphone getcomputer
(string type)
return null;
}}
產品簇1
public
inte***ce
huawei
public
class
p40implements
huawei
}public
class
matebook
implements
huawei
}
產品簇2
public
inte***ce
iphone
public
class
iphonexr
implements
iphone
}public
class
ipad
implements
iphone
}
工廠模式的意義將例項化物件的**提取出來,放到乙個類中同一管理和維護,達到和主專案的依賴關係的解耦,從而提高專案的擴充套件和維護性; 設計模式 抽象工廠方法和工廠方法
工廠方法模式定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。抽象工廠模式提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。從pizzastore的角度,來理解上面的這個類圖 抽象工廠的任務是,定義乙個建立一組產品的介面。這個介面內的每個方...
設計模式(二)工廠方法模式 抽象工廠模式
工廠方法模式與簡單工廠模式的區別在於 簡單工廠模式用單一工廠來生產所有同種類的產品,而工廠模式是用對應的工廠來生產同一種類的不同產品。對於工廠方法模式而言,其簡單模型的uml為 工廠方法模式的定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到工廠抽象類的子類。...
設計模式 簡單工廠 工廠方法 抽象工廠方法模式
簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...