Java设计模式设计模式

《设计模式》建造者模式

2019-08-08  本文已影响5人  敏捷Studio

定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

介绍

UML类图

建造者模式UML类图

角色说明:

实现

1、定义具体的产品类(Product):电脑

public class Computer {
  private String mCPU;
  private String mMemory;
  private String mHD;

  public void setCPU(String CPU) {
    mCPU = CPU;
  }

  public void setMemory(String memory) {
    mMemory = memory;
  }

  public void setHD(String HD) {
    mHD = HD;
  }
}

2、定义抽象建造者(Builder):组装电脑的过程

public abstract class Builder {
  // 组装CPU
  public abstract void buildCPU(String cpu);
  
  // 组装内存
  public abstract void buildMemory(String memory);

  // 组装硬盘
  public abstract void buildHD(String hd);

  // 返回组装好的电脑
  public abstract Computer create();
}

3、创建具体的建造者(ConcreteBuilder):装机人员

public class ConcreteBuilder extends Builder {
  // 创建产品实例
  private Computer mComputer = new Computer();

  @Override
  public void buildCPU(String cpu) {
    mComputer.setCPU(cpu);
  }

  @Override
  public void buildMemory(String memory) {
    mComputer.setMemory(memory);
  }

  @Override
  public void buildHD(String hd) {
    mComputer.setHD(hd);
  }

  @Override
  public Computer create() {
    return mComputer;
  }
}

4、定义指挥者类(Director):老板委派任务给装机人员

public class Director {
  private Builder mBuild = null;

  public Director(Builder build) {
    this.mBuild = build;
  }

  // 指挥装机人员组装电脑
  public void construct(String cpu, String memory, String hd) {
    mBuild.buildCPU(cpu);
    mBuild.buildMemory(memory);
    mBuild.buildHD(hd);
  }
}

5、测试方法

public void createComputer() {
  // 创建建造者实例(装机人员)
  Builder builder = new ConcreteBuilder();
  // 创建指挥者实例,并分配相应的建造者,(老板分配任务)
  Director director = new Director(builder);
  // 组装电脑
  director.construct("i7-6700", "三星DDR4", "希捷1T");
}

应用场景

优缺点

优点:

缺点:

Android中的源码分析

Android中的AlertDialog.Builder就是使用了Builder模式来构建AlertDialog的。

上一篇下一篇

猜你喜欢

热点阅读