1. 概述
2. 代码解析
/**
* 产品1
*/
public abstract class Video {
public abstract void produce();
}
/**
* 产品2
*/
public abstract class Article {
public abstract void produce();
}
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 interface CourseFactory {
Video getVideo();
Article getArticle();
}
public class JavaCourseFactory implements CourseFactory {
@Override
public Video getVideo() {
return new JavaVideo();
}
@Override
public Article getArticle() {
return new JavaArticle();
}
}
/**
* 抽象工厂解析:
* 1. 工厂设计好需要生产的产品;
* 2. 产品族使用具体的产品工厂;
* 3. 产品工厂可以创建出产品族中所有的产品;
* 4. 缺点:
* 1. 若工厂需要生产的产品需要修改, 则会导致所有的实现工厂都需要修改; 且添加新的产品.
* 5. 优点:
* 1. 扩展只需要添加新的工厂, 以及具体的工厂产品即可, 不需要修改源代码.
*/
public class AbstractFactoryTest {
public static void main(String[] args) {
CourseFactory courseFactory = new WebCourseFactory();
Video video = courseFactory.getVideo();
Article article = courseFactory.getArticle();
video.produce();
article.produce();
}
}