android builder 模式学习

 

 

我们以苹果电脑为例,来了解学习下builder模式

1.这里Computer是一个基础类,以主板,显示器,系统来作为电脑三个属性参数

/**
 * 这个是一个基础类
 * 定义基础属性参数
 * */
public abstract class Computer {

    protected String mBroard;
    protected String mDisplay;
    protected String mOS;

    protected Computer(){

    }

    public void setmBroard(String mBroard) {
        this.mBroard = mBroard;
    }

    public String getmBroard() {
        return mBroard;
    }

    public void setmDisplay(String mDisplay) {
        this.mDisplay = mDisplay;
    }

    public String getmDisplay() {
        return mDisplay;
    }


    public void setmOS() {
    }

    public String getmOS() {
        return mOS;
    }

    @Override
    public String toString() {
        return "电脑:主板=" + getmBroard() + ",显示器=" + getmDisplay() + ",系统=" + getmOS();
    }
}

2.Macbook继承Computer,Macbook系统本身就是苹果系统,所以我们新建Macbook对象的时候自动设置系统属性

public class Macbook extends Computer {

    protected Macbook(){
        setmOS();
    }

    @Override
    public void setmOS() {
        mOS = "Mac OS";
    }
}

3.这是一个builder的基础类,包含设置电脑的三个属性参数

/**
 * 这是一个基础构建类
 *
 * */
public abstract class Builder {

    public abstract Builder buildBoard(String board);
    public abstract Builder buildDisplay(String display);
    public abstract Builder buildOS();
    public abstract Computer create();

}

 

4.这里是关键,我们创建一个Macbook的构建者,在这里我们看到,Macbuilder里创建了一个Computer对象指向Macbook,

也就是说,我们构建的对象是这个computer对象,为了代码的封闭性,我们把对象在builder里构建好再传出去,这样比较安全。

注意:这里还有一个知识点,在每一个方法后,我们都返回this,这个this当然指的Macbuilder对象,而这里builder里就包含的我们所需要的computer对象,这样做的好处就是我们可以形成链式调用,具体看步骤5.

public class MacBuilder extends Builder {

    protected Computer computer = new Macbook();

    @Override
    public MacBuilder buildBoard(String board) {
        computer.setmBroard(board);
        return this;
    }

    @Override
    public MacBuilder buildDisplay(String display) {
        computer.setmDisplay(display);
        return this;
    }

    @Override
    public MacBuilder buildOS() {
        computer.setmOS();
        return this;
    }

    @Override
    public Computer create() {
        return computer;
    }
}

5.可以看出,我们这里builder链式调用了buildDisplay和buildBoard两个方法,是不是感觉跟AlertDialog.Builder有点像!

 Builder builder = new MacBuilder();
        builder.buildDisplay("戴尔显示器").buildBoard("因特尔主板");
        System.out.println(builder.create().toString());

 

总结,builder的构建模式,主要为了对象构建的封闭性,适合用于对构建比较复杂的对象,分离构建和表达。

 

 

以上是builder模式的部分代码

代码下载地址https://download.csdn.net/download/skila0/11153730

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值