• 简单工厂模式


    1       简单工厂模式

    1.1     问题

    用任意一种面向对象语言实现一个计算器控制程序,要求输入两个数和运算符号,得到结果。

    1.2     知识点

    • 命名要规范,有意义
    • 可维护性、可复用性、可扩展性
    • 避免重复代码,重复代码用函数或宏等
    • 计算和显示分开
    • 模块划分要合理
    • 保证修改无关性(修改一个方面就不造成另一方面的损失)

    1.3     简单工厂模式

    1.3.1  说明

    简单工厂模式由一个工厂对象决定创建出哪一种产品的实例。简单工厂模式是工厂式家庭中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

    1.3.2  UML

    1.3.3  代码

    #ifndef OPERATOR_H_
    #define OPERATOR_H_

    //基类
    class Operator
    {
    public:
    double m_numberA;
    double m_numberB;

    virtual double GetResult()
    {
    double result=0;
    return result;
    }
    };
    //加法类
    class OperatorAdd:public Operator
    {
    virtual double GetResult()
    {
    return m_numberA+m_numberB;
    }
    };
    //减法类
    class OperatorSub:public Operator
    {
    virtual double GetResult()
    {
    return m_numberA-m_numberB;
    }
    };
    //乘法类
    class OperatorMul:public Operator
    {
    virtual double GetResult()
    {
    return m_numberA*m_numberB;
    }
    };
    //除法类
    class OperatorDiv:public Operator
    {
    virtual double GetResult()
    {
    if(m_numberB==0)
    {
    return 0;
    }
    return m_numberA/m_numberB;
    }
    };
    //工厂类
    class OperatorFactory
    {
    public:
    static Operator *CreateOpreator(char operatorChar)
    {
    Operator *oper=0;
    switch(operatorChar)
    {
    case '+':
    oper=new OperatorAdd();
    break;
    case '-':
    oper=new OperatorSub();
    break;
    case '*':
    oper=new OperatorMul();
    break;
    case '/':
    oper=new OperatorDiv();
    break;
    }
    return oper;
    }
    };
    #endif
    本人新博客网址为:http://www.hizds.com
    本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段。c++/lua/windows逆向交流群:69148232
  • 相关阅读:
    Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name
    docker-compose 安装solr+ikanalyzer
    centos 安装Python3
    spring+springmvc+mybatis 开发JAVA单体应用
    职责链模式例子
    ssm(spring、springmvc、mybatis)框架整合
    PAT (Advanced Level) Practise
    PAT (Advanced Level) Practise
    PAT (Advanced Level) Practise
    PAT (Advanced Level) Practise
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2417224.html
Copyright © 2020-2023  润新知