zoukankan      html  css  js  c++  java
  • 最常用设计模式-简单工厂模式

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


    简介

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

    #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章

  • 相关阅读:
    Windows性能计数器应用
    Azure Oracle Linux VNC 配置
    Azure 配置管理系列 Oracle Linux (PART6)
    Azure 配置管理系列 Oracle Linux (PART5)
    Azure 配置管理系列 Oracle Linux (PART4)
    Azure 配置管理系列 Oracle Linux (PART3)
    Azure 配置管理系列 Oracle Linux (PART2)
    vagrant多节点配置
    docker基本操作
    LINUX开启允许对外访问的网络端口命令
  • 原文地址:https://www.cnblogs.com/bluepcghost/p/9157297.html
Copyright © 2011-2022 走看看