android设计模式-Builder模式

builder模式可用来自由扩展项目。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
builder模式的使用场景
1 相同的方法 ,不同的执行顺序,产生不同的事件结果时。
2 多个部件或零件,都可以装配道一个对象中,但是产生的运行结果又不同时。
3 产品类非常复杂,或者产品类中的调用顺序不同产生不同的作用,这个时候用建造者模式
4 当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时。

public abstract class Computer {
    protected String mBoard; 
    protected String mDisplay; 
    protected String mOS;

    protected Computer() { }
    // 设置 CPU 核心数
    public void setBoard(String board) {
        mBoard = board; 
    }
    // 设置内存
    public void setDisplay(String display) {
        mDisplay = display; 
    }
    // 设置操作系统
    public abstract void setOS();

    @Override
    public String toString() {
        return "Computer [mBoard=" + mBoard + ", mDisplay=" + mDisplay + ", mOS=" + mOS + "]";
    }
}
//抽象 Builder 类
public abstract class Builder {
    // 设置主机
    public abstract void buildBoard(String board);

    // 设置显示器
    public abstract void buildDisplay(String displau);

    // 设置操作系统
    public abstract void buildOS();

    // 创建 ComputerÏ
    public abstract Computer create();
}

//具体的 Computer 类,Macbook

public class Macbook extends Computer {
protected Macbook() {
}

@Override
public void setOS() {
    mOS = "Mac OS X 10.10";
}

}

//具体的 Builder 类,

public class MacbookBuilder extends Builder {
    private Computer mComputer = new Macbook();

    @Override
    public void buildBoard(String board) {
        mComputer.setBoard(board);
    }

    @Override
    public void buildDisplay(String display) {
        mComputer.setDisplay(display);
    }

    @Override
    public void buildOS() {
        mComputer.setOS();
    }

    @Override
    public Computer create() {
        return mComputer;
    }
}
//Director 类,负责构造 Computer 
public class Director {
    Builder mBuilder = null;

    /**
     * @param builder
     */
    public Director(Builder builder) {
        mBuilder = builder;
    }

    /**
     * 构建对象
     */
    public void construct(String board, String display) {
        mBuilder.buildBoard(board);
        mBuilder.buildDisplay(display);
        mBuilder.buildOS();
    }
}
Builder builder = new MacbookBuilder();
        // Director
        Director pcDirector = new Director(builder);
        // 封装构建过程, 4 核, 内存 2GB, Mac 系统 
        pcDirector.construct("英特尔主板","Retina 显示器");
        // 构建电脑, 输出相关信息
        System.out.println("Computer Info : " + builder.create().toString());

android源码中,AlertDialog.Builder使用builder模式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值