简单工厂实现代码:
#include#include 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; }
工厂模式实现代码:
#includeusing 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; }



