設計模式 AbstractFactory

2021-07-02 18:42:28 字數 1960 閱讀 2470

回想工廠方法模式,大廳可能有多種風格,

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