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);
}
}
在这里工厂的工作就是生产某种组件,有多少种组件组合,就需要多少个具体工厂,例如我可以用圆珠笔和练习本组成一个工厂。