设计模式学习笔记之(一、工厂模式)
来源:互联网 发布:java上机考试题库 编辑:程序博客网 时间:2024/05/21 06:51
2011年3月3日 星期四 〖农历 辛卯 免年 正月廿九〗
最近学习了程杰老师编著的《大话设计模式》,真的觉得对自己很适用。因为我对设计模式了解的很少,之前也看过几次关于设计模式的书籍,可是刚看了开头,就看不下去了。这本书浅显易懂,适用于初学者,所以有兴趣的朋友可以买来看看哦。
书中的代码均采用C#来实现,我学习的过程中,全部使用C++来实现。如果同样有兴趣的朋友,可以和我一起学习、探讨。不过,我刚刚在学习哦。可能会很慢。只是把自己学到的、理解的,分享出来,希望对大家有所帮助。
好了,言归正传,进入主题吧。呵呵~
首先来看一下,工厂模式的结构图。
个人觉得学习每一种模式,首先得理解它的结构图,这样的话,就可以轻松地理解它的精髓,这样它的实现就不难了。
关键代码实现如下:
父类:COperateSuper.cpp
//实现运算功能
double COperateSuper::GetResult()
{
return 0;
}
void COperateSuper::SetNumber(double num1, double num2)
{
m_num1 = num1;
m_num2 = num2;
}
COperateSuper.h
public:
virtual double GetResult();//虚函数,这里也可以采用纯虚函数。
protected:
double m_num2;
double m_num1;
//注:子类拥有父类中的所有非private属性
子类1:COperateAdd.cpp
//实现加法运算
double COperateAdd::GetResult()
{
return m_num1 + m_num2;
}
子类2:COperateSub.cpp
//实现减法运算
double COperateSub::GetResult()
{
return m_num1 - m_num2;
}
子类3:COperateMul.cpp
//实现乘法运算
double COperateMul::GetResult()
{
return m_num1 * m_num2;
}
工厂类:COperateFactory.cpp
//实现对各子类的调用功能
COperateSuper *COperateFactory::CreateFactory(char ctype)
{
COperateSuper *super = NULL;
switch(ctype)
{
case 'A':
super = new COperateAdd();
break;
case 'B':
super = new COperateSub();
break;
case 'C':
super = new COperateMul();
break;
default:
break;
}
return super;
}
//注:switch分支语句只支持数字和字符,所以有些书中按字符串去进行分支判断操作,应该是不对的。
客户端实现 main.cpp
cout<<"输入两个数据:";
double num1,num2;
cin>>num1>>num2;
cout<<"选择计算方式:A:加法;B:减法;C:乘法";
char ch;
cin>>ch;
COperateSuper *oper = COperateFactory::CreateFactory(ch);
oper->SetNumber(num1, num2);
printf("计算结果:[%.1f]/n",oper->GetResult());
//释放内存
if(oper != NULL)
{
delete oper;
}
由于时间的关系,今天先整理到这儿,可能不太详细。争取这几天重新编辑一下吧。呵呵因为刚开始学习,可能理解上会有一些问题,也希望感兴趣的朋友一起来学习、讨论。
下班罗。
注:今天收到3.8号的礼品了,又是开心的一天。呵呵~
我自己修改了无数遍,终于把格式错乱和图片无法上传的问题解决了,太费劲了。。。
花费在格式上的时间太多了,打击到我了。5555~
- 设计模式学习笔记之(一、工厂模式)
- 设计模式学习笔记之工厂模式
- 设计模式学习笔记之工厂模式
- 学习笔记:设计模式之工厂模式
- 设计模式学习笔记之工厂模式
- 学习笔记--设计模式之工厂模式
- 设计模式学习笔记之工厂模式
- 设计模式之工厂模式学习笔记
- 设计模式学习笔记之工厂模式
- 设计模式学习之创建工厂(一)
- 设计模式学习笔记之抽象工厂设计模式
- C++设计模式学习笔记一:简单工厂模式
- 设计模式学习笔记(一)工厂模式
- Java学习笔记 - 设计模式(一)工厂模式
- 设计模式学习笔记一(工厂模式)
- 一、简单工厂模式——设计模式学习笔记
- 研磨设计模式笔记(一)之简单工厂模式
- C#设计模式学习笔记(一) 之 简单工厂模式
- FreeBSD-8.2安装Linux环境
- 推荐一些影片
- Python print函数用法
- 设计模式学习笔记之(二、策略模式)
- Access传递查询访问Sql Server数据方法简介
- 设计模式学习笔记之(一、工厂模式)
- Activiti设计器的svn地址
- 《GOF设计模式》—备忘录(MEMENTO)—Delphi源码示例:备忘录接口
- ubuntu8.10 mini2440 nfs 搭建 - mini(2440 GUI) (转载)
- CRC32.h
- 彻底删除IE7
- Notes of Flash Builder 4 Bible
- DevPress GridControl的使用
- fprintf与stderr、stdout的使用