1.简单工厂模式**:主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的 virtual 函数得到不同的结果。
#include<iostream>
using namespace std;
class Operation
{
public:
double numberA;
double numberB;
virtual double GetResult()
{
double result = 0;
return result;
}
};
class OperationAdd:public Operation
{
public:
double GetResult()
{
return numberA + numberB;
}
};
class OperationDec :public Operation
{
public:
double GetResult()
{
return numberA - numberB;
}
};
class OperationFactory
{
public:
static Operation * CreateFactory(char Operator)
{
Operation * oper = NULL;
switch(Operator)
{
case '+':
oper = new OperationAdd();
break;
case '-':
oper = new OperationDec();
break;
}
return oper;
}
};
int main()
{
Operation * per=OperationFactory::CreateFactory('-');
per->numberA = 2;
per->numberB = 3;
cout << per->GetResult();
}
假如需要添加一个新的操作符*,我们需要修改工厂类,这违反了开放封闭原则(类可以被扩展,但不能被修改),所以用到工厂方法模式。(以后再补)