您的位置:首页 > 编程语言 > C语言/C++

C++设计模式之工厂方法模式

2015-06-29 16:39 423 查看
来自:http://blog.csdn.net/pangshaohua/article/details/38912555


参考写的一个工厂demo

1、定义"背景风格的抽象类"、"背景风格的抽象工厂"

#pragma once
/*背景风格抽象类*/
class CBackgroundStyle
{
public:
virtual void DisplayStyle() = 0;//纯虚函数
};

/*背景风格抽象工厂 */
class StyleFactory
{
public:
//工厂方法,具体背景风格的创建过程由子类完成
virtual CBackgroundStyle* CreateBackgroundStyleFactory() = 0;
void DisplayStyle()
{//显示风格
m_pBackgroundStyle = CreateBackgroundStyleFactory();
m_pBackgroundStyle->DisplayStyle();
}

public:
StyleFactory():m_pBackgroundStyle(NULL)
{

}
~StyleFactory()
{
if(NULL != m_pBackgroundStyle)
{
delete m_pBackgroundStyle;
m_pBackgroundStyle = NULL;
}
}

private:
//保存创建的背景风格
CBackgroundStyle* m_pBackgroundStyle;
};


2、定义"潮流风格背景类"、"潮流风格工厂类"

//FashionStyle.h


//FashionStyle.h
#pragma once
/*潮流风格背景类 */
class CFashionStyle: public CBackgroundStyle
{
public:
CFashionStyle(void);
~CFashionStyle(void);
public:
virtual void DisplayStyle();
};

/*潮流风格工厂*/
class FashionStyleFactory: public StyleFactory
{
virtual CBackgroundStyle* CreateBackgroundStyleFactory()
{
CBackgroundStyle* pFashionStyle = new CFashionStyle();
return pFashionStyle;
};
};


FashionStyle.cpp


#include "StdAfx.h"
#include "BackgroundStyle.h"
#include "FashionStyle.h"

CFashionStyle::CFashionStyle(void)
{
}

CFashionStyle::~CFashionStyle(void)
{
}

void CFashionStyle::DisplayStyle()
{
AfxMessageBox(_T("潮流风格背景"));
}


//调用方式

void CLoadDllDemoDlg::OnBnClickedButton18()
{//工厂模式
StyleFactory* pFactory = new FashionStyleFactory();
pFactory->DisplayStyle();
delete pFactory;
pFactory = NULL;
}


上图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: