(一) 什么是简单工厂设计模式
简单工厂模式又称为静态工厂方法模式,是一种的对象的创建模式。通过专门定义一个工厂类来创建其他类的实例,被创建的实例通常都有共同的父类或实现同一接口。
(二) 简单工厂模式中的角色
- 工厂角色(Creator)
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以直接被外界类调用创建所需产品对象。
- 抽象角色(Product)
抽象角色是简单工厂模式所创建所有对象的父类,它负责描述所有实例所共有的公共接口
- 具体产品(Concrete Product)
具体产品所创建的具体对象
(三) 简单工厂案例
以下描述了一个简单工厂类的具体实现,工厂角色为FruitFactory,抽象角色为Fruit,具体角色为Apple、Orange
public interface Fruit { void get(); } public class Apple implements Fruit { @Override public void get() { System.out.println("苹果采摘"); } } public class Orange implements Fruit { @Override public void get() { System.out.println("橘子采摘"); } } public class FruitFactory { public static Fruit getFruit(String fruit) { Fruit f = null; try { Class clazz = Class.forName(fruit); f = (Fruit) clazz.newInstance(); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { e.printStackTrace(); } return f; } }
可根据传入的信息,产生自己想要的对象
public class Test { public static void main(String[] args) { Fruit apple = FruitFactory.getFruit("Apple"); Fruit orange = FruitFactory.getFruit("Orange"); apple.get(); orange.get(); } }
(四) 简单工厂模式的优缺点
优点:
用户在使用工厂类去创建所需实例时,无需了解这些对象是如何创建以及如何组织的,用户可以根据外界传入的信息,判断生产什么样的对象
可在无需修改原来代码的情况下,增加新的具体类,提高了程序的可扩展性和灵活性
缺点:
工厂类集中了所有实例创建的逻辑,一旦工厂类出现问题,所有的客户端都会受到牵连。
随着产品种类的增多,就会出出现不同的抽象类或借口,违背了单一职责的原则