建造者模式
建造者模式的思想.就是我需要一个对象,我不用创建,我去找建筑商,然后我告诉建筑商我要的对象都有哪些属性,
建筑商它也不创建对象,建筑商去找一个或一些能创建和赋值的工人来干,由建筑商负责指挥工人先怎么样,再怎么样,最后将对象给我
实体类
package ink.yql.builder;
// 需要被创建的类
public class RealEstate {
private Integer floorNumber;
private String name;
public Integer getFloorNumber() {
return floorNumber;
}
public void setFloorNumber(Integer floorNumber) {
this.floorNumber = floorNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public RealEstate(){
}
@Override
public String toString() {
return "RealEstate{" +
"floorNumber=" + floorNumber +
", name='" + name + '\'' +
'}';
}
}
建造者(建筑商)
package ink.yql.builder;
// 建造者没有创建对象和赋值的能力,单可以指挥工人来创建对象,对属性赋值
public class Builder {
private Worker worker;
// 有人来找建筑商,由建筑商去找工人
public Builder(){
worker = new Worker();
}
// 建筑商指挥工人创建的流程
RealEstate builder(int foolNumber,String name){
RealEstate realEstate = worker.newRealEstate();
worker.setFloorNumber(foolNumber);
worker.setName(name);
return realEstate;
}
}
工人
package ink.yql.builder;
// 工人类有创建对象和对象赋值的能力
public class Worker {
private RealEstate rea;
RealEstate newRealEstate(){
rea = new RealEstate();
return rea;
}
void setFloorNumber(int floorNumber){
rea.setFloorNumber(floorNumber);
}
void setName(String name){
rea.setName(name);
}
}
测试
package ink.yql.builder;
public class Test04 {
public static void main(String[] args) {
// 我去找建筑商
Builder builder = new Builder();
// 由建筑商创建好对象,赋值好,然后给我
RealEstate estate = builder.builder(26, "恒大");
System.out.println(estate);
}
}