#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 ...