有一定程式設計經驗的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意味著在例項化乙個具體的類,所以物件的方法是準確的實現,而非抽象的方法定義。因此這樣一來 將會缺乏彈性。我們針對介面程式設計,可以隔離掉以後系統中可能發生的一大堆改變,如果 針對介面來寫,那麼對於乙個方法的實現將會是多種多樣的。當 使用大量具體...