本文共 1452 字,大约阅读时间需要 4 分钟。
运用简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件同态实例化相关的类,对客户端来说,去除了与具体产品的依赖
工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代来进行,想要加功能,本来是要修改工厂类的,然后修改客户端就行了。
#includeusing namespace std;//工厂方法类//抽象产品类template class Base{ public: virtual T operation(T a,T b) = 0;};//具体产品类template class Add:public Base { public: T operation(T a,T b) { return a + b; }};template class Sub:public Base { public: T operation(T a,T b) { return a - b; }};template class Mul:public Base { public: T operation(T a,T b) { return a * b; }};template class Div:public Base { public: T operation(T a,T b) { if(b == 0) { throw "除数为0"; } return a / b; }};//抽象工厂类template class Factory{ public: virtual Base *createOperation() = 0;};//具体工厂类template class AddFactoty: public Factory { public: Base *createOperation() { return new Add (); }};template class SubFactoty: public Factory { public: Base *createOperation() { return new Sub (); }};template class MulFactoty: public Factory { public: Base *createOperation() { return new Mul (); }};template class DivFactoty: public Factory { public: Base *createOperation() { return new Div (); }};int main(){ Factory *oper = new AddFactoty ();//创建一个加法工厂 Base *ADD = (Add *)oper->createOperation(); cout << ADD->operation(20,10) << endl; return 0;}
转载地址:http://lxnwi.baihongyu.com/