设计模式 —— 简单工厂模式

概念

简单工厂模式又称之为静态工厂方法(Static Factory Method), 属于创建型模式。简单工厂模式是根据传递的参数不同, 返回不同实现类的实例对象.(这些类都依赖一个父类或接口)

实现方式

我们先简单的来看看简单工厂模式的组成:

  1. 工厂类角色(Factory): 工厂类是工厂模式的最重要的组成部分. 向外提供一个创建方法,该方法会根据传递的参数来返回对应的实现类的实例对象。
  2. 抽象产品角色(abstract product): 工厂角色生产的所有对象都需要依赖此抽象。一般通过接口或者抽象类来实现.
  3. 具体产品实现角色(real product): 具体的产品实现,依赖抽象角色.由工厂角色来创建

工厂类

/**
* 专门用来创建车辆的工厂类
* @author yuxuan
*/
public class SimpleCarFactory {

public static Car createCar(String color) {
    Car car = null;

    switch (color) {
        case "red":
            car = new RedCar();
         break;
        case "black":
            car = new BlackCar();
        break;
    }

        return car;
    }

}

抽象Car类

/**
* 专门用来创建车辆的工厂类
* @author yuxuan
*/
public class SimpleCarFactory {

public static Car createCar(String color) {
    Car car = null;

    switch (color) {
        case "red":
            car = new RedCar();
        break;
        case "black":
            car = new BlackCar();
        break;
}

    return car;
}

}

Car实现类

/**
* 红色车辆实现类
* @author yuxuan
*/
public class RedCar extends Car{

    @Override
    public void sprayPaint() {
        System.out.println("red car");
    }

}
/**
* 黑色车辆实现类
* @author yuxuan
*/

public class BlackCar extends Car{

    @Override
    public void sprayPaint() {
        System.out.println("black car");
    }

}

简单工厂模式的优缺点

优点

  • 明确了各自的职责和权利,有利于整个软件体系结构的优化
  • 使用方无须知道创建类的过程,只需要提供对应的参数即可.

缺点

  • 由于工厂集中了所有对象的创建逻辑,一旦工厂出了问题,就会导致整个系统受到影响.
  • 系统扩展受限,一旦添加新的对象就需要修改工厂逻辑,在对象类型过多时,势必会导致工厂逻辑过于复杂和臃肿,不利于系统的扩展和维护

总结

  • 简单工厂的好处就在于你需要什么,只需要传递一个规则内的参数,就可以获取到所需要的对象.
  • 简单工厂的核心理念就是把对象的创建和对象的使用分离开来.为此当对象类型过多时势必会导致创建环节的臃肿

你可能感兴趣的:(设计模式 —— 简单工厂模式)