简单工厂模式
简单工厂模式的工厂类一般使用静态方法,通过接受的参数来判断应该返回哪个对象的实例。如果不修改工厂中的判断方法,则无法扩展工厂。
*举例:计算器
计算器的加减乘除可以看做是具体的对象,在工厂方法中有static修饰的方法createOperation来根据传入的运算符号实例化具体对象。*
UML图:
工厂模式
在简单工厂模式中,如果需要添加或者修改某个对象,则需要修改工厂类的代码,这违反了“开放–封闭”原则。工厂模式能够解决上述问题。
UML类图:
在工厂模式中,当需要增加一个新的对象类型的时候,我们既需要创建一个对象的类,亦需要创建这个类的工厂方法,通过调用工厂方法去生成这个对象的实例。用户需要在客户端手动选择需要实例化的工厂对象。这样一来,增加了代码量,为了解决这个问题,我们可以通过java中的反射来解决。