设计模式-简单工厂

Posted by YaPi on May 10, 2018

基础定义

  • 由一个工厂对象决定创建出哪一种产品类实例
  • 类型:创建型,但不属于GOF23种设计模式

使用场景:

  1. 工程类负责创建的对象比较少
  2. 客户端只知道传入工厂类的参数,对于如何创建对象不关心

优点:

  1. 只需要知道传入的参数不需要知道类的信息,无须知道其创建的细节

缺点:

  1. 增加新的产品需要修改工厂类的判断逻辑,违背开闭原则
源码实例
  1. Calendar.getInstance()
代码实例
// 工厂方法抽象类
public abstract class Video {
    public abstract void produce();
}

// 实现1
public class JavaVideo extends Video {
    @Override
    public void produce() {
        System.out.println("Java课程视频");
    }
}
// 实现2
public class PythonVideo extends Video {
    @Override
    public void produce() {
        System.out.println("Python课程");
    }
}

// 工厂类
public class VideoFactory {
    public Video getVideo(String type){
        if ("java".equalsIgnoreCase(type)){
            return new JavaVideo();
        }else if ("python".equalsIgnoreCase(type)){
            return new PythonVideo();
        }
        return null;
    }
}

// 使用

public class Test {
    public static void main(String[] args){
        VideoFactory factory = new VideoFactory();
        Video v = factory.getVideo("java");
        v.produce();
    }
}