package com.builder;
public class Product {
private int height;
private String purpose;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public String getPurpose() {
return purpose;
}
public void setPurpose(String purpose) {
this.purpose = purpose;
}
}
package com.builder;
public abstract class Builder {
@SuppressWarnings("unused")
private Product product = new Product();
public abstract void buildfoundation();
public abstract void buildWall();
public abstract void buildRoof();
public Product build(){
return product;
};
}
package com.builder;
public class CommonHouse extends Builder {
@Override
public void buildfoundation(){
System.out.println("盖普通房子");
}
@Override
public void buildWall() {
System.out.println("盖普通房子,高度为:3.5米");
}
@Override
public void buildRoof() {
System.out.println("盖普通房子屋顶");
}
}
package com.builder;
public class HeightHouse extends Builder {
@Override
public void buildfoundation() {
System.out.println("盖高房子");
}
@Override
public void buildWall() {
System.out.println("盖高房子,高度为100米");
}
@Override
public void buildRoof() {
System.out.println("盖高房子屋顶");
}
}
package com.builder;
public class Conductor {
private Builder builder;
public Conductor(Builder builder) {
this.builder = builder;
}
public void setterBuilder(Builder builder){
this.builder = builder;
}
public void constructHouse(){
builder.buildfoundation();
builder.buildWall();
builder.buildRoof();
Product product = builder.build();
System.out.println("========="+product);
}
}
package com.builder;
public class Client {
public static void main(String[] args) {
CommonHouse commonHouse = new CommonHouse();
Conductor conductor = new Conductor(commonHouse);
conductor.constructHouse();
HeightHouse heightHouse = new HeightHouse();
conductor.setterBuilder(heightHouse);
conductor.constructHouse();
}
}