Android设计模式之Build设计模式

我们都知道,Android源码中AlertDialog就是使用Build设计模式,这种模式的主要特点就是链式的,方便使用者的调用,使用者无需关心内部如何实现就可以方便调用。好,接下来用一个demo来说明。

在我理解来,实现Build设计模式,主要两个核心类,一个是你的目标对象,一个是Buider对象。首先我们定义一个Target对象,这个对象就是类似AlertDailog这个类,就是使用者要调用的类。

public class Target {
    private String mTitle;
    private String mMessage;
    private int mIcon;


    public static TargetBuilder builder(){
        return new TargetBuilder();
    }


    public Target() {
    }


    public Target(String mTitle, String mMessage, int mIcon) {
        this.mTitle = mTitle;
        this.mMessage = mMessage;
        this.mIcon = mIcon;
    }


    public Target showText(){//目标对象调用方法
        System.out.println(mTitle+mMessage+mIcon);
        return this;
    }
}


Target 类中我们可以看到,需要title、message、icon三个属性,我们在这个类中并没有直接给他们赋值,而是通过Builder类给他赋值。


接着再创建Builder类:

public class TargetBuilder {
    private String mTitle;
    private String mMessage;
    private int mIcon;


    public TargetBuilder setTitle(String title) {
        this.mTitle = title;
        return this;
    }


    public TargetBuilder setMessage(String message) {
        this.mMessage = message;
        return this;
    }


    public TargetBuilder setIcon(int icon) {
        this.mIcon = icon;
        return this;
    }


    public Target build(){
        return new Target(mTitle,mMessage,mIcon);
    }
}


其实,说到底,Builder类就是一个赋值和传值的类,如例,我们可以通过set方法给各个属性赋值,但必须有Builder的对象,所以我们在Target中定义一个静态方法,来创建Builder对象,然后就可以给Builder中的属性赋值了,赋值的过程有个重点,就是返回值必须返回当前对象,这样子赋值完一个值后方便继续给下一个属性赋值,赋值完后,我们在Builder类中再通过一个builde()方法,其实就是创建Target对象,本质就是把值传到Target类中,这个时候Target的属性就有值了,我们在Target里面创建我们需要的方法就可以。


你可能感兴趣的:(设计模式)