努力吧.关于工厂模式(一)

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);
}
}

在这里工厂的工作就是生产某种组件,有多少种组件组合,就需要多少个具体工厂,例如我可以用圆珠笔和练习本组成一个工厂。



posted @ 2012-01-30 14:49  meieiem  阅读(270)  评论(0编辑  收藏  举报