设计模式-抽象工厂(AbstractFactory)模式
2019-10-30 本文已影响0人
qyfl
主要角色
- 抽象产品工厂
- 抽象产品零件
职责
产品工厂可以创建一系列同一产品族的产品。隐藏同一产品组产品创建细节。
类图
类关系示意图代码
public abstract class Article {
public abstract void produce();
}
---
public abstract class Video {
public abstract void produce();
}
---
public interface CourseFactory {
Video getVideo();
Article getArticle();
}
---
public class JavaArticle extends Article {
@Override
public void produce() {
System.out.println("编写Java课程手记");
}
}
---
public class JavaVideo extends Video {
@Override
public void produce() {
System.out.println("录制Java课程视频");
}
}
---
public class JavaCourseFactory implements CourseFactory {
@Override
public Video getVideo() {
return new JavaVideo();
}
@Override
public Article getArticle() {
return new JavaArticle();
}
}
使用
public class Test {
public static void main(String[] args) {
CourseFactory courseFactory = new JavaCourseFactory();
Video video = courseFactory.getVideo();
Article article = courseFactory.getArticle();
video.produce();
article.produce();
}
}
技巧
- 类似于 Video 和 JavaCourseFactory 这样的产品零件和产品,可以有很多个。
- 向使用代码一样,调用的是具体产品工厂的方法创建具体产品。
- 和工厂方法的却别在我看来就是有没有产品零件,有产品零件有有了产品族的概念。