- 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口
- 无须指定他们具体的类
适用场景
- 同一产品族一起使用创建对象需要大量重复的代码
- 所有的产品以同样的接口出现,从而使客户端不依赖于具体实现
代码示例:同一产品族使用了一个工厂,从JavaCourseFactory取出的一定是Java的手记和视频
public abstract class CourseFactory {
abstract Article getArticle();
abstract Video getVideo();
}
public class JavaCourseFactory extends CourseFactory{
Article getArticle() {
return new JavaArticle();
}
Video getVideo() {
return new JavaVideo();
}
}
public class PythonCourseFactory extends CourseFactory{
Article getArticle() {
return new PythonArticle();
}
Video getVideo() {
return new PythonVideo();
}
}
test
public class Test {
public static void main(String[] args) {
CourseFactory courseFactory=new JavaCourseFactory();
Video video=courseFactory.getVideo();
Article article=courseFactory.getArticle();
video.produceVedio();
article.produceArticle();
}
}
缺点:新增产品等级,会违背开闭原则,比如CourseFactory加了一个Code,则需要修改。所以抽象工厂用于产品族内的产品等级比较固定的情况