phone: 要创建的对象,拥有自己的基本成员变量和方法
public class Phone { private String mCpu; private String mRam; private String mScreen; public void setCpu(String cpu) { mCpu = cpu; System.out.println("使用"+cpu+"处理器"); } public void setRam(String ram) { mRam = ram; System.out.println("拥有"+ram+"内存"); } public void setScreen(String screen) { mScreen = screen; System.out.println("使用"+screen+"屏幕"); } }
builder: 抽象的建造者类,规定创建的条件
public abstract class Builder { public abstract void buildCpu(String cpuName); public abstract void buildScreen(String screenName); public abstract void bulidRam(String ramName); public abstract Phone creatPhone(); }
concreteBuilder: 具体的创建类,创建要创建的类的实例,并在对应的方法里传值
public class ConcreteBuilder extends Builder { private Phone mPhone; public ConcreteBuilder(){ mPhone=new Phone(); } @Override public void buildCpu(String cpuName) { mPhone.setCpu(cpuName); } @Override public void buildScreen(String screenName) { mPhone.setScreen(screenName); } @Override public void bulidRam(String ramName) { mPhone.setRam(ramName); } @Override public Phone creatPhone() { return mPhone; } }
director: 指导创建建造者的类,
public class Diretor { private Builder mBuilder; public Diretor(Builder builder){ mBuilder=builder; } public void creatBuilder(String cpu,String screen,String ram){ mBuilder.buildCpu(cpu); mBuilder.buildScreen(screen); mBuilder.bulidRam(ram); mBuilder.creatPhone(); } }
main方法测试:
//建造者模式测试方法 private static void testBuilder(){ ConcreteBuilder concreteBuilder=new ConcreteBuilder(); Diretor diretor=new Diretor(concreteBuilder); diretor.creatBuilder("联发科","大猩猩玻璃","8G"); }
输出结果:
使用联发科处理器 使用大猩猩玻璃屏幕 拥有8G内存
这是标准的建造者模式,在Android中使用的建造者模式是在此基础上改进,更加灵活。