定义:由一个工厂对象创建出哪一种产品类的实例
优点:只需要传入一个正确的参数,就可以获取你所需的对象而无须知道其创建细节
只需要一个工厂, 就可以创建对应产品的实例。工厂类职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则
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 abstract class Video {
/**
* 生产
*/
public abstract void produce();
}
public class JavaVideo extends Video {
@Override
public void produce() {
System.out.println("Java课程");
}
}
public class PythonVideo extends Video {
@Override
public void produce() {
System.out.println("Python课程");
}
}
public class Test {
public static void main(String[] args) {
final VideoFactory videoFactory = new VideoFactory();
Video video = videoFactory.getVideo("java");
video.produce();
}
}