#include <iostream>
using namespace std;
//算法基类
class operation
{
public:
operation() {}
void set_data( double a, double b )
{
A=a;
B=b;
}
virtual ~operation() {}
virtual double result() {}
protected:
double A,B;
};
//具体的算法类
class add : public operation
{
public:
double result()
{
return A+B;
}
};
class sub : public operation
{
public:
double result()
{
return A-B;
}
};
//工厂类
class factory
{
public:
operation *create_operation( char s )
{
operation *p = NULL;
switch(s)
{
case '+' :
p = new add;
break;
case '-' :
p = new sub;
break;
}
return p;
}
};
//main函数,也可以看成客户端
int main()
{
factory *f = new factory;
operation *p = f->create_operation( '+' );
p->set_data( 98, 25.76 );
cout << p->result() << endl;
delete f;
f = NULL;
delete p;
p = NULL;
return 0;
}
这个星期来看了大话设计模式,有一点感觉了,把自己学到的写下来,还是用书上的例子吧!
如上,所谓的简单工厂模式主要用于创建对象。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。当我们想要添加新的功能的时候添加新类就可以了,不过坏处就是客户端必须要知道基类和工厂类,耦合性差,所以后面会有提到相关的改良方法