ABSTRACT FACTORY 抽象工厂模式 其实用配电脑来解释会比较容易理解 我有一张空白的电子表格 -------------这是一个抽象工厂 表格里需要填入cpu 主板等 -----------这些是抽象产品 然后这是--------------------------------具体产品
cpu 有intel CPU amdCPU 主板有 华硕主板 技嘉主板 我已经写好了几种配置,这是-------------具体工厂
第一种 cpu intel CPU 主板 华硕主板 第二种 cpu amd CPU 主板 技嘉主板 需要哪种配置,就复制一张配置单,需按配置单取产品
这里每一张配置单可以当成一个工厂,当有多种配置的时候,就有多个工厂了。最后由工厂中的方法得到的都是一台完整的电脑 有一点是否应该这样更解,在抽象工厂模式中,这里工厂只是负责生产,并不是持有?就是说每一次通过同一个工厂实例取得的cpu都是一个新的CPU. 另一个例子 例如 我需要得到 笔和纸, 笔分为 圆珠笔 毛笔, 纸分为 作业本 练习本 。 抽象工厂类 工厂
具体工厂类 做作业 练字 具体笔工厂类 作业工厂 具体纸工厂类 练字工厂
抽象笔 public interface pen { } 抽象本子 public interface Book { } 抽象工厂 public interface Factory { public Pen createPen(String name); public Book createBook(String name); } 具体笔 圆珠笔 public class BallPen implements Pen { private String name; public BallPen (String name) { } } 毛笔 public class BrushPen implements Pen { private String name; public BrushPen(String name) { } } 具体本子 作业本 public class WorkBook implements Book { private String name; public WorkBook(String name) { } } 练习本 public class ExerciseBook implements Book { private String name; public ExerciseBook(String name) { } } 具体作业工厂 public class WorkFactory implements Factory { public Pen createPen(String name) { return new BallPen(name); } public Book createBook(String name) { return new WorkBook(name); } } 具体练字工厂 public class ExerciseFactory implements Factory { public Pen createPen(String name) { return new BrushPen(name); } public Book createBook(String name) { return new ExerciseBook(name); } } 在这里工厂的工作就是生产某种组件,有多少种组件组合,就需要多少个具体工厂,例如我可以用圆珠笔和练习本组成一个工厂。