我看设计模式系列(1)--简单工厂模式【设计模式C++实现】
2010-09-02 22:52
369 查看
感谢博主:http://dotcpp.javaeye.com/blog/605168
无论是CSDN、博客园或者J***AEYE,看着很多牛人工作、学习之余写心得写代码,为初学者提供方便。我不是大牛也不是精英。但我也是个过来人。说一说我的一些心得吧。
关于设计模式,《大话设计模式》是我比较喜欢的一本书,不过这本书是C#语法写的例子,不懂C#的C++初学者们很期待能有C++版的源码。我在学习过程中,用C#和C++两种语言实现了本书中的所有例子。并把它放在一个DOC文档里,挂在CSDN上:http://download.csdn.net/source/1136752 ,下载量也算可以。看来学的人还是比较多。最近几天想把它整理一下,放在我的这个新博客里面,自己也顺便复习一下。
关于设计模式的学习,建议先看一下《大话设计模式》和《Head First设计模式》,这两个比较容易入门,然后看经典的软工双雄里面的一本《设计模式》。最后可以看看《重构:改善既有代码的设计》。加上平时的练习和动脑,相信有一天能悟出一些自己独特的心得。
好了,上面说了这么多,进入正题。今天只说一下最简单的简单工厂模式。我相信大家如果看《大话设计模式》的话,很容易明白。毕竟学IT的IQ都不低。放段C++的代码:
Cpp代码
上面的代码非常简单,请看下面UML图:
简单工厂模式说简单点就是在一个工场类里面,根据输入的不同的条件产生同一类的不同对象,然后根据类的多态性使对象具有多样性。
无论是CSDN、博客园或者J***AEYE,看着很多牛人工作、学习之余写心得写代码,为初学者提供方便。我不是大牛也不是精英。但我也是个过来人。说一说我的一些心得吧。
关于设计模式,《大话设计模式》是我比较喜欢的一本书,不过这本书是C#语法写的例子,不懂C#的C++初学者们很期待能有C++版的源码。我在学习过程中,用C#和C++两种语言实现了本书中的所有例子。并把它放在一个DOC文档里,挂在CSDN上:http://download.csdn.net/source/1136752 ,下载量也算可以。看来学的人还是比较多。最近几天想把它整理一下,放在我的这个新博客里面,自己也顺便复习一下。
关于设计模式的学习,建议先看一下《大话设计模式》和《Head First设计模式》,这两个比较容易入门,然后看经典的软工双雄里面的一本《设计模式》。最后可以看看《重构:改善既有代码的设计》。加上平时的练习和动脑,相信有一天能悟出一些自己独特的心得。
好了,上面说了这么多,进入正题。今天只说一下最简单的简单工厂模式。我相信大家如果看《大话设计模式》的话,很容易明白。毕竟学IT的IQ都不低。放段C++的代码:
Cpp代码
//运算操作基类 class COperation { public: int m_nFirst; int m_nSecond; virtual double GetResult() //返回操作结果 { double dResult=0; return dResult; } }; //加法 class AddOperation : public COperation { public: virtual double GetResult() { return m_nFirst+m_nSecond; } }; //减法 class SubOperation : public COperation { public: virtual double GetResult() { return m_nFirst-m_nSecond; } }; //工厂类,为了方便我用的静态函数 class CCalculatorFactory { public: static COperation* Create(char cOperator); }; COperation* CCalculatorFactory::Create(char cOperator) { COperation *oper; //在C#中可以用反射来取消判断时用的switch,在C++中用什么呢?我觉得是RTTI,后面可以讲到 switch (cOperator) { case '+': oper=new AddOperation(); break; case '-': oper=new SubOperation(); break; default: oper=new AddOperation(); break; } return oper; } //客户端 int main() { int a,b; cin>>a>>b; COperation * op=CCalculatorFactory::Create('-'); op->m_nFirst=a; op->m_nSecond=b; cout<<op->GetResult()<<endl; return 0; }
上面的代码非常简单,请看下面UML图:
简单工厂模式说简单点就是在一个工场类里面,根据输入的不同的条件产生同一类的不同对象,然后根据类的多态性使对象具有多样性。
相关文章推荐
- 设计模式系列4-----C++实现备忘录模式(Memento Pattern)
- C++实现设计模式之 — 简单工厂模式
- 设计模式系列3-----C++实现命令模式(Command Pattern)
- 设计模式系列6-----C++实现状态模式(State Pattern)
- 简单工厂模式的C++实现——设计模式学习(1)
- 通过例子学设计模式之--简单工厂模式以及使用场景说明(C++实现)
- C++ 实现 设计模式 系列
- 设计模式系列5-----C++实现中介者模式(Mediator Pattern)
- 设计模式系列7-----C++实现访问者模式(Visitor Pattern)
- 设计模式之 简单工厂模式(C++实现)
- [Gof设计模式]简单工厂模式和工厂模式的C++实现
- 我所理解的设计模式(C++实现)——简单工厂模式(Simple Factory Pattern)
- 设计模式之 简单工厂模式(C++ 模板实现)
- 设计模式-简单工厂模式 C++实现
- 设计模式之简单工厂模式,C++实现
- 设计模式C++实现_2_简单工厂模式
- 设计模式实现系列-简单工厂模式-工厂模式-抽象工厂模式
- 设计模式C++实现-简单工厂模式、工厂方法模式、抽象工厂模式
- 设计模式系列1-----C++实现策略模式(Strategy)
- 设计模式---简单工厂模式(c++实现)