抽象工廠模式
它的定義為提供乙個建立一系列相關或相互依賴物件的介面,而無須指定他們具體的類。
例項:工廠不僅可以生產單核處理器,也可以生產多核處理器。
乙個工廠專門生產a型號的單核多核處理器,令乙個工廠專門用來生產b型號的單核多核處理器。
簡單工廠模式的最大優點:
工廠類中包含了必要的邏輯判斷,根據客戶端的選擇例項化相關的類。對客戶端來說,去除了具體產品的依賴。
缺點:增加功能,方法中需要對工廠類中增加條件判斷,對擴充套件開放,對修改也開放。
抽象工廠缺點:如果要增加乙個專案表,需要增加三個類,iproject,sqlserverproject,accessproject,需要修改ifactory,sqlserve***ctory,accessfactory
抽象工廠例項:乙個專案中使用多個資料庫
用反射+抽象工廠訪問資料庫
//工廠a:專門用來生產a型號的處理器
shared_pt***ctorya::singleinstance()
shared_pt***ctorya::multiinstance()
//工廠b:專門用來生產b型號的處理器
shared_pt***ctoryb::singleinstance()
shared_pt***ctoryb::multiinstance()
singlecore.h
#ifndef singlecore_h
#define singlecore_h
class singlecore
;class singlecorea : public singlecore
;class singlecoreb : public singlecore
;#endif
singlecore.cpp
#include "singlecore.h"
#include using namespace std;
singlecore::singlecore(void)
singlecore::~singlecore(void)
singlecorea::singlecorea()
singlecorea::~singlecorea()
void singlecorea::show()
singlecoreb::singlecoreb()
singlecoreb::~singlecoreb()
void singlecoreb::show()
multicore.h
#ifndef multicore_h
#define multicore_h
class multicore
;class multicorea : public multicore
;class multicoreb : public multicore
;#endif
multicore.cpp
#include "multicore.h"
#include using namespace std;
multicore::multicore(void)
multicore::~multicore(void)
multicorea::multicorea()
multicorea::~multicorea()
void multicorea::show()
multicoreb::multicoreb()
multicoreb::~multicoreb()
void multicoreb::show()
1 3抽象工廠模式
1.概念 提供乙個建立一系列相關物件的介面,而無需指定具體的類。用簡單工廠改進抽象工廠例項 public class dataaccess return user 出現壞味道 public static idepartment createdepartment return department i...
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...