【大话设计模式——学习笔记(1)】简单工厂模式

来源:互联网 发布:网络歌曲黑名单 编辑:程序博客网 时间:2024/06/03 23:24

前言: 最近小P换了工作,从广州转移阵地到深圳,觉得深圳是一个非常有活力的城市,想想过去的一大段时间一直在忙工作而没时间去学习,技术是不断在更新进步的,不学习的程序员很容易就被淘汰。于是小P把在CSDN下载的《大话设计模式》一电子书翻出来自学,希望能够与大家分享一下学习中遇到的问题和看法,并诚心邀请各位童鞋积极的指出我的不足之处。


简单工厂模式

主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。

  GOOD:适用于不同情况创建不同的类时

         BUG:客户端必须要知道基类和工厂类,耦合性差


(工厂类与基类为关联关系


//基类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;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;}



简单工厂模式主要就是把有特定属性的一类事物由共同的基类派生而成,再通过一个控制器管理它们,当客户端需要某一类功能的时候可以通过控制器直接创建。


简单工厂模式在游戏中的应用:这段时间小P写了一个跑酷类的游戏,其中就用到了简单工厂模式。

      首先创建一个基类Entiy(实体类),然后从实体类派生出GoldEntiy(金币类)和RadishEntiy(萝卜类),然后 再创建一个EntiyManager(实体类控制器),通过控制器去实例化金币和萝卜。这样做的好处是,之后需要添加实体比如苹果等,就可以直接继承Entiy类,然后再通过EntiyManager去控制,而又不影响金币和萝卜两个实体。

      


0 0
原创粉丝点击