java-设计模式-5-创建型模式-建造
建造者(Builder)模式
创建的东西细节复杂,还必须暴露给使用者。屏蔽过程而不屏蔽细节
分析:
产品角色(Product)
抽象建造者(Builder)
具体建造者(Concrete Builder)
java
@Data
//产品角色
public class Phone {
protected String cpu;
protected String mem;
protected String disk;
protected String cam;
}
//抽象建造者
abstract class AbstractBuilder{
Phone phone;
abstract AbstractBuilder customCpu(String cpu);
abstract AbstractBuilder customMem(String mem);
abstract AbstractBuilder customDisk(String disk);
abstract AbstractBuilder customCam(String cam);
Phone getProduct(){return phone;}
}
//具体建造者
class XiaomiBuilder extends AbstractBuilder{
public XiaomiBuilder(){phone = new Phone();}
/**
* @param cpu
*/
@Override
AbstractBuilder customCpu(String cpu) {
phone.cpu = cpu;
return this;
}
@Override
AbstractBuilder customMem(String mem) {
phone.mem = mem;
return this;
}
@Override
AbstractBuilder customDisk(String disk) {
phone.disk = disk;
return this;
}
@Override
AbstractBuilder customCam(String cam) {
phone.cam = cam;
return this;
}
}
@Builder可以代替上面的类的创建。