设计模式---创建型模式之建造者模式
如果我们创建的对象比较复杂,但其细节还要暴露给使用者,这样就需要用到建造者模式。
建造者设计模式,屏蔽过程,而不屏蔽细节。
比如我们有一个手机类,定义如下:
java
public class Phone {
//cpu
private String cpu;
//运行内存
private String memory;
//存储内存
private String disk;
//省略getter and setter 省略toString
}
我们想定制自己的一个手机,可以先定义一个抽象的构建者;
java
public abstract class AbstarctPhoneBuilder {
Phone phone;
//定制cpu
abstract AbstarctPhoneBuilder withCpu(String cpu);
//定制运行内存
abstract AbstarctPhoneBuilder withMemory(String memory);
//定制存储内存
abstract AbstarctPhoneBuilder withDisk(String disk);
//返回构建好的phone
Phone build(){
return phone;
}
}
如果我们想定制一个香蕉手机,就可以继承这个抽象的构建者,然后实现这些定制方法:
java
public class BananaPhoneBuilder extends AbstarctPhoneBuilder{
public BananaPhoneBuilder(){
this.phone = new Phone();
}
@Override
AbstarctPhoneBuilder withCpu(String cpu) {
this.phone.setCpu(cpu);
return this;
}
@Override
AbstarctPhoneBuilder withMemory(String memory) {
this.phone.setMemory(memory);
return this;
}
@Override
AbstarctPhoneBuilder withDisk(String disk) {
this.phone.setDisk(disk);
return this;
}
}
使用方式如下:
java
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());
}
}
运行结果如下: