简单工厂模式是什么?用来干啥?
设想一下,如果有很多个类,都是完成类似的工作。那么就可以写一个工厂类就像一个中间人一样,来帮助我们选择需要的类来创建对象,而不用我们自己去new,UML图如下:

比如要做一个计算器程序,需要设计加减乘除等运算类 和 去调用这些运算并显示结果的客户端类,可以创建一个工厂类

用简单工厂模式有什么好处呢?
工厂类可以通过逻辑判断,来决定在什么时候创建哪一个产品类的实例,这样客户端可以不用自己去new对象了。简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。外界与具体类隔离开来,偶合性低。明确区分了各自的职责和权力,有利于整个软件体系结构的优化
那么怎么使用简单工厂模式呢?
就上述设计计算器程序为例,抽象接口及其实现类如下
1 2 3 4 5 6 7 8 9 10 11 12
| public interface Operation{ public double getResult(double numA,double numB); }
public class OperationAdd implements Operation{ public double getResult(double numA,double numB){ return numA+numB; } }
|
工厂类如下
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class OperationFactory{ public static Operation createOperation(String operate){ switch(operate){ if operate.equals("+") return new OperationAdd(); else if operate.equals("-") return new OperationSub(); else if ... ... } } }
|
客户端代码如下
1 2 3
| Operator oper = OperatorFactory.getOperator("+"); double result = oper.getResult(1,2);
|