简介

客户端不依赖于产品实例如何被创建,实现等细节,
强调一系列相关产品对象一起使用创建对象需要大量重复代码

将一个系列的产品族放在一起

Coding

image.png

  1. package com.yulang.design_pattern_23.abstract_factory;
  2. public interface CourseFactory {
  3. Video getVideo();
  4. Article getArticle();
  5. }
  1. package com.yulang.design_pattern_23.abstract_factory;
  2. public abstract class Video {
  3. public abstract void produce();
  4. }
  1. package com.yulang.design_pattern_23.abstract_factory;
  2. public class PythonVideo extends Video {
  3. @Override
  4. public void produce() {
  5. System.out.println("python--video");
  6. }
  7. }
  1. package com.yulang.design_pattern_23.abstract_factory;
  2. public class PythonArticle extends Article {
  3. @Override
  4. public void produce() {
  5. System.out.println("python -- article");
  6. }
  7. }
  1. package com.yulang.design_pattern_23.abstract_factory;
  2. public class PythonCourseFactory implements CourseFactory {
  3. @Override
  4. public Video getVideo() {
  5. return new PythonVideo();
  6. }
  7. @Override
  8. public Article getArticle() {
  9. return new PythonArticle();
  10. }
  11. }
  1. package com.yulang.design_pattern_23.abstract_factory;
  2. public abstract class Article {
  3. public abstract void produce();
  4. }