工廠方法模式

2021-08-21 17:47:51 字數 1114 閱讀 3240

抽象工廠(abstract factory)角色:工廠方法模式的核心,任何工廠類都必須實現這個介面;

工廠(concrete factory)角色:具體工廠類是抽象工廠的乙個實現,負責例項化產品物件;

抽象(abstract product)產品:工廠方法模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面;

具體產品(concrete product)角色:工廠方法模式所建立的具體例項物件。

簡單工廠模式 + 「開閉原則」 = 工廠方法模式

#include #include using namespace std;

/*建立乙個水果抽象類供具體的水果實現和抽象工廠的返回*/

class abstractfruit ;

/*若想新增一種新水果,則不再需要去修改其中任何乙個類,

而只需要實現乙個新水果工廠和乙個新水果具體類即可*/

public:

virtual void showfruitname()

};class orange : public abstractfruit

};/*建立乙個抽象工廠類,供具體的水果工廠實現,並返回抽象水果類*/

class abstractfruitfactory ;

/*實現抽象工廠,並返回乙個抽象水果指標*/

public:

virtual abstractfruit* createfruit()

};class orangefactory : public abstractfruitfactory

};void test()

int main(int argc, char **argv)

不需要記住具體類名,甚至不需要記住具體的引數;

實現了物件建立和使用的分離;

系統的可擴充套件性提高,無需修改介面和原類。

增加系統中的類的個數,複雜度和理解度增加;

增加了系統的抽象性和理解難度。

客戶端不知道它所需要的物件的類;

抽象工廠通過其子類來指定建立哪個物件。

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

工廠方法模式(一) 簡單工廠方法模式

ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...