zoukankan      html  css  js  c++  java
  • 设计模式5-工厂方法模式

    一、我的描述

    首先这个模式还是工厂的一种,什么是工厂呢?从简单工厂模式来说,其实就是将产生的类的方法抽象出来,使我们代码的耦合性更好,这样说来,我们的工厂方法模式呢,也应该是能够生产对象。我们看工厂方法的定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。最不爱看的就是这种定义,看完不知道什么意思。我这里试着说说,我对工厂方法的理解:首先为什么会出现工厂方法模式,是因为简单工厂方法,违背了软件设计的对修改关闭,对扩展开放的原则。为了满足这种需求,那么就对就产生工厂进行扩展,让工厂也就扩展开放,就出现了这种简单工厂方法。

    二、UML图

    三、我的代码

    #include<iostream>
    using namespace std;
    class Operator {
    public:
        virtual int GetResult() { return 0; }
        virtual void SetNum1(int n1) { num1 = n1; }
        virtual void SetNum2(int n2) { num2 = n2; }
        virtual int GetNum1() { return num1; }
        virtual int GetNum2() { return num2; }
    private:
        int num1;
        int num2;
    };
    
    class Add : public Operator {
    public:
        virtual int GetResult() {
            return GetNum1() + GetNum2();
        }
    };
    
    class FactoryMethod {
    public:
        virtual Operator *GetOper() { return NULL; }
    };
    
    class AddFactory : public FactoryMethod {
    public:
        virtual Operator *GetOper() {
            return new Add();
        }
    };
    
    int main()
    {
        FactoryMethod *p_fm = new AddFactory();
        Operator *p_oper = p_fm->GetOper();
        p_oper->SetNum1(100);
        p_oper->SetNum2(200);
        cout << p_oper->GetResult() << endl;
    }
  • 相关阅读:
    AB测试原理及样本量计算的Python实现
    数据分析-A/B test
    数据分析-分类分析
    数据分析-漏斗模型(AARRR模型)
    置信区间的I型错误和II型错误
    tableau 计算字段
    tableau数据分层、数据组、数据集
    tableau 地图
    tableau 进阶
    tableau 基础
  • 原文地址:https://www.cnblogs.com/457220157-FTD/p/4031324.html
Copyright © 2011-2022 走看看