C++设计模式之工厂方法模式
2015-06-29 16:39
423 查看
来自:http://blog.csdn.net/pangshaohua/article/details/38912555
参考写的一个工厂demo
1、定义"背景风格的抽象类"、"背景风格的抽象工厂"
2、定义"潮流风格背景类"、"潮流风格工厂类"
//调用方式
上图
参考写的一个工厂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; }
上图
相关文章推荐
- C++ GUI Qt4学习笔记(一)
- c++类的改进
- 黑马程序员——C语言之函数与手动编译执行C程序
- 双向循环链表(c++实现)
- C语言指针
- C++ const面试题和相关的解释
- 汉字字频统计程序(Python版+C语言版)
- C++静态数组和动态数组的区别
- C语言判断某个年份是否是闰年
- C++第六章 习题
- 《thinking in c++》Volume 1知识点总结(二)
- C语言逆序输出某个数字
- C++中传值参数和引用参数和指针怎样区别?
- 《thinking in c++》Volume 1知识点总结(一)
- C语言计算最大公约数
- C语言static
- 学习C++动态链接库基础知识 (主要关于QT项目)PART2
- boost::serialization学习笔记
- C++获取控制台输出
- C语言extern