设计模式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;
}
原文地址:https://www.cnblogs.com/457220157-FTD/p/4031324.html