3.6 设计模式-建造者模式

1.简介

将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

2.使用场景

主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

3.案例

下面写一个创建电脑的案例,电脑有 主板、显示屏、系统组成。但是我们想要创建一个Mac电脑。首先能确定苹果电脑的系统是OS。

computer

public abstract class Computer {
    protected String os;
    protected String broad;
    protected String display;

    public void setOs(String os) {
        this.os = os;
    }
    public void setBroad(String broad) {
        this.broad = broad;
    }

    public void setDisplay(String display) {
        this.display = display;
    }
    @Override
    public String toString() {
        return "Computer{" +
                "os='" + os + '\'' +
                ", broad='" + broad + '\'' +
                ", display='" + display + '\'' +
                '}';
    }
}

MacBook 以及内部类 Builder

 public abstract class Builder {

    public abstract Builder buildOs(String os);
    public abstract Builder buildDisplay(String display);
    public abstract Builder buildBroad(String broad);

    public abstract Computer build();
}


public class MacBook extends Computer {
    
    public MacBook(String os, String broad, String display) {

        this.os = os;
        this.broad = broad;
        this.display = display;
    }
    public static class MacBookBuilder extends Builder{

        private String os,broad,display;
        @Override
        public Builder buildOs(String os) {
            this.os =os;
            return this;
        }

        @Override
        public Builder buildDisplay(String display) {
            this.display = display;
            return this;
        }

        @Override
        public Builder buildBroad(String broad) {
            this.broad= broad;
            return this;
        }

        @Override
        public Computer build() {
            return new MacBook(os,broad,display);
        }
    }
}


执行代码


        Computer macBookBuilder = new MacBook.MacBookBuilder()
                .buildOs("huawei")
                .buildDisplay("xxx")
                .buildBroad("mac OS ")
                .build();

        Log.d(TAG, "testBuilder: " + macBookBuilder.toString());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值