1 概念
1 定义
工厂模式,又称工厂方法模式。在工厂父类定义一个创建对象的接口,而工厂子类则负责生成具体的对象。每个具体工厂类根据需要创建不同的对象,从而实现了对象的创建和使用的解耦。
类型:创建型
2 应用场景
- 创建对象需要大量重复代码
- 客户端不依赖某个产品实例具体如何创建
- 一个类通过子类来指定创建哪个对象
3 优缺点
优点:
- 用户只需要关心产品所需工厂,无需关心创建细节
- 符合开闭原则
缺点:
- 类的个数容易多,增加复杂度
- 增加了系统的抽象性和理解难度
2 代码实现
场景: 需要根据电影类型创建电影
1 2 3 4 5 6 7
|
public abstract class Video { public abstract void produce();
}
|
1 2 3 4 5 6
| public class JavaVideo extends Video { @Override public void produce() { System.out.println("录制Java课程视频"); } }
|
1 2 3 4 5 6
| public class PythonVideo extends Video { @Override public void produce() { System.out.println("录制Python课程视频"); } }
|
1 2 3 4 5 6
|
public abstract class VideoFactory { public abstract Video getVideo(); }
|
1 2 3 4 5 6
| public class JavaVideoFactory extends VideoFactory { @Override public Video getVideo() { return new JavaVideo(); } }
|
1 2 3 4 5 6
| public class PythonVideoFactory extends VideoFactory { @Override public Video getVideo() { return new PythonVideo(); } }
|
1 2 3 4 5 6 7 8 9 10
| public class Test { public static void main(String[] args) { VideoFactory pythonVideoFactory = new PythonVideoFactory(); VideoFactory javaVideoFactory = new JavaVideoFactory(); Video pythonVideo = pythonVideoFactory.getVideo(); pythonVideo.produce(); Video javaVideo = javaVideoFactory.getVideo(); javaVideo.produce(); } }
|
输出:
录制Python课程视频
录制Java课程视频