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