简单工厂实现代码:
#include <iostream>
#include <string>
using namespace std;
//产品抽象父类
class Operation {
public:
double m_leftVlaue;
double m_rightValue;
virtual double GetResult() = 0;
};
//具体产品实现类
class AddOperation : public Operation {
double GetResult() { return m_leftVlaue + m_rightValue; }
};
class SubOperation : public Operation {
double GetResult() { return m_leftVlaue - m_rightValue; }
};
class MulOperation : public Operation {
double GetResult() { return m_leftVlaue * m_rightValue; }
};
class DivOperation : public Operation {
double GetResult() { return m_leftVlaue / m_rightValue; }
};
//工厂类
class OperatorFactory {
public:
static Operation* createOperation(char c) {
switch (c) {
case '+':
return new AddOperation;
break;
case '-':
return new SubOperation;
break;
case '*':
return new MulOperation;
break;
case '/':
return new DivOperation;
break;
}
}
};
int main() {
Operation* operation = OperatorFactory::createOperation('+');
operation->m_leftVlaue = 1;
operation->m_rightValue = 2;
cout << operation->GetResult() << endl;
return 0;
}
工厂模式实现代码:
#include <iostream>
using namespace std;
class AbstractProduct {
public:
virtual void makeProduct() = 0;
};
class AbstractFactory {
public:
virtual AbstractProduct* createProduct() = 0;
};
class PlaneProduct : public AbstractProduct {
public:
void makeProduct() { cout << "造飞机....." << endl; }
};
class PlaneFactory : public AbstractFactory {
public:
AbstractProduct* createProduct() {
AbstractProduct* product = new PlaneProduct;
return product;
}
};
class RocketProduct : public AbstractProduct {
public:
void makeProduct() { cout << "造火箭...." << endl; }
};
class RocketFactory : public AbstractFactory {
public:
AbstractProduct* createProduct() {
AbstractProduct* product = new RocketProduct;
return product;
}
};
int main() {
//造飞机
AbstractFactory* factory = new PlaneFactory;
AbstractProduct* product = factory->createProduct();
product->makeProduct();
//造火箭
factory = new RocketFactory;
product = factory->createProduct();
product->makeProduct();
return 0;
}