设计模式-建造者模式

建造者

就是装修房子,直接上才艺。
这里拿代码直接跑:GitHub

我老婆开始指挥了,启动类
public class Client {

    public static void main(String[] args) {
        // 首先我要自己知道我有房子要做事了,但是我要怎么做,还要看老婆指挥
        Decorator decorator = new DecoratorOne();
        // 然后我老婆就要开始逼逼赖赖,房子还是他说了算,房子给他了
        Manager manager = new Manager(decorator);
        // 开始发话了,我去忙了
        Parlour parlour = manager.decorate();
        // 弄好了,拿来把你
        parlour.show();
    }
}
修房子要做的事,抽象
public abstract class Decorator {

    protected Parlour product = new Parlour();

    public abstract void buildWall();

    public abstract void buildTv();

    public abstract void buildSofa();

    public Parlour getResult() {
        return product;
    }

}
这是我的房子,我要自己装修
public class DecoratorOne extends Decorator {

    @Override
    public void buildWall() {
        System.out.println("砌墙,呼呼呼~~~~~");
        product.setWall("大白墙");
    }

    @Override
    public void buildTv() {
        System.out.println("买电视...");
        product.setTv("买好了,小米的");
    }

    @Override
    public void buildSofa() {
        System.out.println("买沙发");
        product.setSofa("布沙发,拿来吧你");
    }
}
这是我老婆,装房子不会,但是会指挥
public class Manager {

    private final Decorator builder;

    public Manager(Decorator builder) {
        this.builder = builder;
    }

    public Parlour decorate(){
        builder.buildWall();
        builder.buildTv();
        builder.buildSofa();
        return builder.getResult();
    }
}
房子
public class Parlour {

    private String wall;
    private String tv;
    private String sofa;

    public void show() {
        System.out.println(wall);
        System.out.println(tv);
        System.out.println(sofa);
    }

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

    public void setTv(String tv) {
        this.tv = tv;
    }

    public void setSofa(String sofa) {
        this.sofa = sofa;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值