回想工廠方法模式,大廳可能有多種風格,
a和b的widget也可能是不同組別不同人進行開發。這種情況下乙個工廠類顯然對**結構,程式可維護性有影響。
我們可以建立多個widgetfactory分別生成a,b類的widget。
abstractfactory.h
#ifndef abstractfactory_h
#define abstractfactory_h
#include
class widget ;
class awidget: public widget
virtual
void ondraw() = 0;
};class bwidget: public widget
virtual
void ondraw() = 0;
};class abutton: public awidget
};class aimageview: public awidget
};class bbutton: public bwidget
};class bimageview: public bwidget
};class abstractwidgetfactory
;class awidgetfactory: public abstractwidgetfactory
~awidgetfactory(){}
public:
widget* create_widget(const
char * name);
};class bwidgetfactory: public abstractwidgetfactory
~bwidgetfactory(){}
public:
widget* create_widget(const
char * name);
};class widgetfactory
public:
static widget * create_widget(const
char * type, const
char * name);
};#endif // abstractfactory_h
abstractfactory.cpp
#include
#include
#include "abstractfactory.h"
widget* awidgetfactory::create_widget(const
char * name)
else
if (strcmp(name, "image") == 0)
return
nullptr;
}widget* bwidgetfactory::create_widget(const
char * name)
else
if (strcmp(name, "image") == 0)
return
nullptr;
}widget * widgetfactory::create_widget(const
char * type, const
char * name)
else
if (strcmp(type, "b") == 0)
}
main.cpp
#include
#include "abstractfactory.h"
using
namespace
std;
int main(int argc, char *argv)
設計模式 設計模式
物件導向程式設計 oop 的基本概念有 封裝,抽象,繼承,多型等,如何開發出可復用的物件導向軟體一直困擾著軟體開發人員。可復用的物件導向技術包括類的繼承,物件的組合和引數化型別 generic gof的巨著 設計模式 總結出可復用的物件導向的23個設計模式,並且歸類成 建立型模式,結構型模式和行為型...
設計模式 命令設計模式
一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...
設計模式 9 設計模式
文章 head first 第一章 head first 設計模式讀書筆記 1 策略模式 觀察者模式 head first設計模式學習2 裝飾者模式 head first 設計模式3 工廠模式 head first設計模式4 命令模式 head first 設計模式5 介面卡模式和外觀模式 head...