设计模式—创建型模式之建造者模式
如果我们创建的对象比较复杂,但其细节还要暴露给使用者,这样就需要用到建造者模式。
建造者设计模式,屏蔽过程,而不屏蔽细节。
比如我们有一个手机类,定义如下:
public class Phone {//cpuprivate String cpu;//运行内存private String memory;//存储内存private String disk;//省略getter and setter 省略toString
}
我们想定制自己的一个手机,可以先定义一个抽象的构建者;
public abstract class AbstarctPhoneBuilder {Phone phone;//定制cpuabstract AbstarctPhoneBuilder withCpu(String cpu);//定制运行内存abstract AbstarctPhoneBuilder withMemory(String memory);//定制存储内存abstract AbstarctPhoneBuilder withDisk(String disk);//返回构建好的phonePhone build(){return phone;}
}
如果我们想定制一个香蕉手机,就可以继承这个抽象的构建者,然后实现这些定制方法:
public class BananaPhoneBuilder extends AbstarctPhoneBuilder{public BananaPhoneBuilder(){this.phone = new Phone();}@OverrideAbstarctPhoneBuilder withCpu(String cpu) {this.phone.setCpu(cpu);return this;}@OverrideAbstarctPhoneBuilder withMemory(String memory) {this.phone.setMemory(memory);return this;}@OverrideAbstarctPhoneBuilder withDisk(String disk) {this.phone.setDisk(disk);return this;}
}
使用方式如下:
public class BuilderTest {public static void main(String[] args) {AbstarctPhoneBuilder builder = new BananaPhoneBuilder();Phone phone = builder.withCpu("量子cpu").withMemory("1T运行内存").withDisk("100T存储内存").build();System.out.println(phone.toString());}
}
运行结果如下: