- 定义:定义一个创建对象的接口,让实现这个接口的类来决定实例化哪个类
- 工厂方法让类的实例化推迟到子类中进行
适用场景
- 创建对象需要大量重复的代码
- 应用层不依赖于产品类实例如何被创建,实现等细节
代码示例:VideoFactory为抽象工厂类,具体的对象的返回在下放到子类来实现
public abstract class VideoFactory {
abstract Video getVideo();
}
public class JavaVideoFactory extends VideoFactory{
Video getVideo() {
return new JavaVideo();
}
}
public class PythonVideoFactory extends VideoFactory{
Video getVideo() {
return new PythonVideo();
}
}
Video类
public abstract class Video {
abstract void produceVedio();
}
public class JavaVideo extends Video {
void produceVedio() {
System.out.println("录制java视频");
}
}
public class PythonVideo extends Video{
void produceVedio() {
System.out.println("录制python视频");
}
}
Test中使用
public class Test {
public static void main(String[] args) {
VideoFactory videoFactory=new JavaVideoFactory();
Video video=videoFactory.getVideo();
video.produceVedio();
}
}