設計模式 Factory

2021-07-02 17:23:54 字數 1153 閱讀 9643

有一定程式設計經驗的xdjm對工廠方法模式肯定不會陌生了,曾經做過乙個遊戲大廳,那會的qt還沒有qml這個東東,為了能夠動態的載入頁面以及更加方便的除錯。每乙個window都是使用乙個xml去定義,裡面按照樹狀結構定義了各種型別的控制項。每個控制項都是widget的父類,window在載入介面時顯然並不方便去建立每個具體的widget類,這時我們只需要建立乙個factory類,來處理相關的工作即可。

程式示例(以下**在qt 5.4 mingw下執行通過):

widgetfactory.h

#ifndef widgetfactory_h

#define widgetfactory_h

#include

class widget ;

class button: public widget

};class imageview: public widget

};class widgetfactory

;#endif // widgetfactory_h

widgetfactory.cpp

#include 

#include

#include "widgetfactory.h"

widgetfactory::widgetfactory()

widgetfactory::~widgetfactory()

widget* widgetfactory::create_widget(const

char * name)

else

if (strcmp(name, "image") == 0)

return

nullptr;

}

main.cpp

#include 

#include "sessionmgr.h"

#include "widgetfactory.h"

using

namespace

std;

int main(int argc, char *argv)

示例中我們只傳人了name,實際中的卻可以是乙個xml節點,乙個資料庫讀取出來的結構體。factory為乙個型別的使用者遮蔽了複雜的初始化工作。

設計模式 Factory

工廠模式 factory pattern 是最常用的設計模式之一。它屬於建立型模式,提供了一種很好的建立物件的方法。首先看乙個例子。在類繼承過程中,我們經常將一些類的公共介面抽象出來形成乙個基類,方法用virtual關鍵字修飾。利用多型性,我們可以宣告乙個基類指標,通過指向實際的子類來實現不同的功能...

設計模式 FACTORY

部落格 系統的產品有多於乙個的產品族,而系統只消費其中某一族的產品 主要是解耦,降低後面維護成本,只需修改工廠實現,不要在各呼叫地方修改 其實工廠模式網上一大堆例子根據不同場景各種實現方案,主要是要理解工廠模式的思想 public class factory private shape shape ...

設計模式 工廠模式(Factory)

除了使用new關鍵字以外,還有更多製造物件的方法。new意味著在例項化乙個具體的類,所以物件的方法是準確的實現,而非抽象的方法定義。因此這樣一來 將會缺乏彈性。我們針對介面程式設計,可以隔離掉以後系統中可能發生的一大堆改變,如果 針對介面來寫,那麼對於乙個方法的實現將會是多種多樣的。當 使用大量具體...