• 设计模式 之 《简单工厂模式》


    主要用于创建对象。新添加类时,不会影响以前的系统代码。

     

    核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。

     

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

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

     

    #ifndef __SIMPLE_FACTORY_MODEL__
    #define __SIMPLE_FACTORY_MODEL__
    
    //运算类
    class Operation
    {
    public:
        virtual double getResult() = 0;
    
    public:
        double numberA;
        double numberB;
    
    };
    
    //实际 加 减 乘 除 算法类
    class OperationAdd : public Operation
    {
    public:
        double getResult() {return numberA+numberB;}
    };
    
    //简单工厂类
    class SimpleFactory
    {
    public:
        static Operation* calculation(char c);
        
    };
    
    Operation* SimpleFactory::calculation(char c)
    {
        Operation* oper = NULL;
        switch (c)
        {
        case '+':
            oper = new OperationAdd();
            break;
        default:
            break;
        }
        return oper;
    }
    
    #endif //__SIMPLE_FACTORY_MODEL__
    
    
    //客户端
    #include "SimpleFactoryModel.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        double a, b;
        char c;
        cin>>a>>c>>b;
    
        Operation* oper = SimpleFactory::calculation(c);
        oper->numberA = a;
        oper->numberB = b;
        cout<<a<<" + "<<b<<" = "<<oper->getResult()<<endl;
    
        return 0;
    }
  • 相关阅读:
    CSS hack——不同浏览器的CSS应对法
    IE6对CSS支持Bug收集
    jQuery
    jQuery学习备忘
    MSSQLSERVER之发布-分发-订阅
    利用Resgen.exe 批量生成resources文件
    多语言处理
    c# winform 打包部署 自定义界面 或设置开机启动
    C#修改文件夹权限
    VS2008 Windows Form项目安装包生成详解
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3281635.html
Copyright © 2020-2023  润新知