快捷鍵簡單工廠模式
工廠模式
抽象工廠模式
簡單工廠模式是指由工廠物件決定例項化哪乙個產品類。優點:只需要告訴工廠型號,不需要記住產品具體名稱;
缺點:新增產品時,需要修改工廠類。(違反開放-封閉原則)
步驟如下:
1)首先,定義乙個抽象類shape,其中定義了純虛函式start();
2)然後,通過繼承定義了「實體」類(具體產品)circle和shape;
3)接著,定義乙個工廠類,實現了shape* factory::creat(int type),該函式根據輸入確定要例項化哪乙個子類(產品即circle和shape),將其返回給基類物件;
4)最後,在**中只要例項化乙個工廠類,根據需要動態選擇具體產品。
#include
using namespace std;
class shape;
class circle : public shape
};class rectange : public shape
};class factory
return temp;
}};int main()
工廠模式是對簡單工廠模式的優化,即在增加產品時不需要修改工廠類。優點:增加產品時不需要修改工廠類。
缺點:乙個工廠只能生產一種產品,因此可以考慮再加一層抽象(即乙個工廠只生成一類產品,具體什麼產品可以由子類決定)。
#include
using namespace std;
class shape;
class circle : public shape
};class rectange : public shape
};class factory
;class factory_a : public factory
};class factory_b : public factory
};int main()
抽象工廠模式即把產品抽象成系列產品,具體產品從這些抽象產品繼承獲得,工廠也提供呼叫系列產品的介面。優點:新加產品時,不需要修改產品類。
#include
using namespace std;
// 定義兩個系列產品,可以衍生其他具體產品型號
class shape1;
class shape2;
class circle1 : public shape1
};class rectange1 : public shape1
};class circle2 : public shape2
};class rectange2 : public shape2
};class factory
;class factory_a : public factory
shape2* creat2()
};class factory_b : public factory
shape2* creat2()
};int main()
當要增加乙個rectangle3時,只需要從shape1派生出rectangle3,然後擴充套件乙個工廠類rectangle3,即可實現。**如下:
#include
using namespace std;
// 定義兩個系列產品,可以衍生其他具體產品型號
class shape1;
class shape2;
class circle1 : public shape1
};class rectange1 : public shape1
};class rectange3 : public shape1
};class circle2 : public shape2
};class rectange2 : public shape2
};class factory
;class factory_a : public factory
shape2* creat2()
};class factory_b : public factory
shape2* creat2()
};class factory_c : public factory
shape2* creat2()
};int main()
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...