以下内容仍在更新完善...
工厂模式是什么?
要了解设计模式,首先了解什么是UML类图会有更大的帮助。
UML类图
图内“+”表示public,“-”表示private,“#”表示protected。
继承关系:空心三角形+实线
关联关系:实线箭头
聚合关系:空心菱形+实线箭头
聚合表示一种弱的"拥有"关系,体现的是A对象可以包含B对象,但是B对象不是A对象的一部分。
合成(组合)关系:实心菱形+实线箭头
合成(组合)表示一种强的"拥有"关系,体现的是整体与部分的关系,两者的生命周期一样。
依赖关系:虚线箭头
工厂模式
简单工厂模式UML类图(以简单计算器为例)
具体实现代码示例:
public class OperationFactory //简单运算工厂类 { public static Operation createOperate(string operate) { Operation oper = NULL; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": ... break; case "/": ... break; } return oper; } }
工厂类负责判断需要具体实例化的对象。再交由继承了运算类的具体单一运算类进行计算。下面给出运算类和加法类的代码示例:
public class Operation //Operation运算类 { private: double _number1 = 0; double _number2 = 0; public: double Number1 { get{ return _number1; } set{ _number1 = value; } } double Number2 { ... } virtual double GetResult() //虚函数 { double result = 0; return result; } } class OperationAdd : Operation //继承Operation类 { public override double GetResult() //重写 { double result = 0; result = Number1 + Number2; return result; } }
客户端代码示例如下:
Operation oper; oper = OperationFactory.createOperate("+"); oper.Number1 = 1; oper.Number2 = 2; double result = oper.GetResult();