三種工廠模式

2021-08-19 02:16:30 字數 1614 閱讀 3225

#include#include#include using namespace std;

class operation

double geta() const

double getb() const

void seta(double x)

void setb(double y)

virtual double getresult()

~operation() {}

private:

double a, b;

};class add : public operation

};class sub : public operation

};class mul : public operation

};class div : public operation

};class ******factory

return p;

}};int main()

catch (const exception& exception)

return 0;

}

優點:

工廠類中包含必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對客戶端而言,去除了與具體產品的依賴

缺點:每次新增乙個產品子類都必須在工廠類中新增乙個判斷分支

#include#include#include using namespace std;

class operation

double geta() const

double getb() const

void seta(double x)

void setb(double y)

virtual double getresult() = 0;

~operation() {}

private:

double a, b;

};class add : public operation

};class sub : public operation

};class mul : public operation

};class div : public operation

};class factory ;

class addfactory : public factory

};class subfactory : public factory

};class mulfactory : public factory

};class divfactory : public factory

};int main()

catch (const exception& exception)

return 0;

}

例項 -> 類 -> 類工廠

例項 -> 類 -> 類工廠 -> 抽象工廠

即,在抽象工廠模式中,增加乙個具體的工廠很容易,但是你想在工廠中多生產一種產品,就需要修改很多個類,會違背開閉原則,這種情況下應該使用工廠模式。

參考:

三種工廠模式

本文介紹設計模式中的工廠模式。工廠模式,顧名思義,就是本來我們需要某樣東西,需要自己造,可有了工廠呢?我需要該東西時,只需告訴工廠,工廠就會生產該東西,一定程度上,把使用者和生產者分開了。解耦了。追本溯源,假設我們現在有乙個類a,類a裡需要類b的乙個物件,一般的處理是這樣,b b new b 但這樣...

三種工廠模式

簡單工廠模式不是23種裡的一種,簡而言之,就是有乙個專門生產某個產品的類。比如下圖中的滑鼠工廠,專業生產滑鼠,給引數0,生產戴爾滑鼠,給引數1,生產惠普滑鼠。工廠模式也就是滑鼠工廠是個父類,有生產滑鼠這個介面。戴爾滑鼠工廠,惠普滑鼠工廠繼承它,可以分別生產戴爾滑鼠,惠普滑鼠。生產哪種滑鼠不再由引數決...

三種工廠模式

include 簡單工廠模式 沒有開閉原則 需要自己去判斷建立了什麼類 class abstractfruit class pear public abstractfruit class peach public abstractfruit 定義水果工廠 class factory else if ...