工厂模式

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课程视频


工厂模式
http://example.com/工厂模式/
作者
Panyurou
发布于
2023年10月5日
许可协议