GOF23----建造者模式

需求:建造房子的过程为:打桩,砌墙,封顶
uml:
在这里插入图片描述
具体代码实现:

public class House {
    private String baise;
    private String wall;
    private String roofed;

    public House() {
    }

    public String getBaise() {
        return this.baise;
    }

    public void setBaise(String baise) {
        this.baise = baise;
    }

    public String getWall() {
        return this.wall;
    }

    public void setWall(String wall) {
        this.wall = wall;
    }

    public String getRoofed() {
        return this.roofed;
    }

    public void setRoofed(String roofed) {
        this.roofed = roofed;
    }
}
public abstract class HouseBuilder {
    protected House house = new House();

    public HouseBuilder() {
    }

    public abstract void buildBasic();

    public abstract void buildWalls();

    public abstract void roofed();

    public House buildHouse() {
        return this.house;
    }
}
public class HouseDirector {
    HouseBuilder houseBuilder = null;

    public HouseDirector(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    public void setHouseBuilder(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    public House constructHouse() {
        this.houseBuilder.buildBasic();
        this.houseBuilder.buildWalls();
        this.houseBuilder.roofed();
        return this.houseBuilder.buildHouse();
    }
}
public class CommonHouse extends HouseBuilder {
    public CommonHouse() {
    }

    public void buildBasic() {
        System.out.println(" 普通房子打地基5米 ");
    }

    public void buildWalls() {
        System.out.println(" 普通房子砌墙10cm ");
    }

    public void roofed() {
        System.out.println(" 普通房子屋顶 ");
    }
}
public class HighBuilding extends HouseBuilder {
    public HighBuilding() {
    }

    public void buildBasic() {
        System.out.println(" 高楼的打地基100米 ");
    }

    public void buildWalls() {
        System.out.println(" 高楼的砌墙20cm ");
    }

    public void roofed() {
        System.out.println(" 高楼的透明屋顶 ");
    }
}
public class Client {
    public Client() {
    }

    public static void main(String[] args) {
        CommonHouse commonHouse = new CommonHouse();
        HouseDirector houseDirector = new HouseDirector(commonHouse);
        House house = houseDirector.constructHouse();
        System.out.println("--------------------------");
        HighBuilding highBuilding = new HighBuilding();
        houseDirector.setHouseBuilder(highBuilding);
        houseDirector.constructHouse();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值