设计模式之简单工厂模式

(一) 什么是简单工厂设计模式

  简单工厂模式又称为静态工厂方法模式,是一种的对象的创建模式。通过专门定义一个工厂类来创建其他类的实例,被创建的实例通常都有共同的父类或实现同一接口。

(二) 简单工厂模式中的角色

  1. 工厂角色(Creator)

   简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以直接被外界类调用创建所需产品对象。

  1. 抽象角色(Product)

  抽象角色是简单工厂模式所创建所有对象的父类,它负责描述所有实例所共有的公共接口

  1. 具体产品(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();
    }
}

 (四) 简单工厂模式的优缺点

  优点:

    用户在使用工厂类去创建所需实例时,无需了解这些对象是如何创建以及如何组织的,用户可以根据外界传入的信息,判断生产什么样的对象

    可在无需修改原来代码的情况下,增加新的具体类,提高了程序的可扩展性和灵活性

  缺点:

    工厂类集中了所有实例创建的逻辑,一旦工厂类出现问题,所有的客户端都会受到牵连。

    随着产品种类的增多,就会出出现不同的抽象类或借口,违背了单一职责的原则

原文地址:https://www.cnblogs.com/gdy1993/p/9150107.html