简单工厂模式主要是利用类的多态性,在Factory中根据不同的需求创建相应的子类得到不同的结果。
下图是以一个简单计算器为例的类图
图中OperationFactory工厂类的实现大致如下:
1 class OperationFactory
2 {
3 public:
4 Operation *createOperation(std::string operator)
5 {
6 Operation *pOper = NULL;
7 switch (operator)
8 {
9 case '+':
10 pOper = new OperationAdd;
11 break;
12 case '-':
13 pOper = new OperationSub;
14 break;
15 case '*':
16 pOper = new OperationMul;
17 break;
18 case '/':
19 pOper = new OperationDiv;
20 break;
21 }
22 return pOper;
23 }
24 };
根据返回的指针调用GetResult()方法便能得到结果。
若是要添加其他运算,只需新建一个运算类实现Operation接口,然后在工厂中添加一个case实例化该对象。