最常用设计模式-简单工厂模式

    这里主要讨论设计模式中的简单工厂模式。


简介

    有些时候我们通过利用多态机制封装了一堆派生类,这些派生类会用到不同的地方。为了代码整洁,我们不希望将这些派生类加入到头文件中。此时,可以使用一个工厂类来管理这些派生类。下面就是一个粒子,

#include <iostream>

class Operation{
  public:
    virtual float getResult(const float a,const float b)=0;
};

class OperationAdd:public Operation
{
  public:
    float getResult(const float a, const float b){
      return a+b;
    }
};

class OperationSub:public Operation
{
  public:
    float getResult(const float a, const float b){
      return a-b;
    }
};

class OperationFactory{
  public:
    static Operation* getOperation(char op){
      Operation *oper;
      switch(op){
        case '+': oper = new OperationAdd();break;
        case '-': oper = new OperationSub();break;
        default: oper = nullptr;
      }
      return oper;
    }
};

int main(){
  Operation *oper1 = OperationFactory::getOperation('+');
  Operation *oper2 = OperationFactory::getOperation('-');
  float ret1 = oper1->getResult(1,2);
  float ret2 = oper2->getResult(3,2);
 
  std::cout<<"["<<ret1<<","<<ret2<<"]"<<std::endl; 

  return 0;
}

    在这个粒子中,我们有一堆派生类OperationAdd,OperationSub等。通过工厂类OperationFactory,我们成功的屏蔽掉了这些派生类。对用户来说(注意main部分的代码),只需要通过基类的接口函数就可以使用自己想要的功能。


Reference

    [1] 《大话设计模式》,程杰,第1章

posted on 2018-06-08 19:28  深蓝e  阅读(116)  评论(0编辑  收藏  举报

导航