android常用设计模式之建造者模式

一.定义:

建造者模式属于创建型模式,是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

 

二.解释和作用:

     建造者模式中封装了复杂的建造过程和细节,提供简单的创建方法,使用者不需要知道其中复杂的建造过程和细节,只要提供指定对象的类型和内容就可以直接创建出复杂的对象。

    例如:用户需要买一台电脑,他不需要知道电脑的cpu、内存、硬盘等是怎么制造和组装起来的,只需要提供需要购买的电脑品牌和型号,就可以直接购买使用了。

 

三.模式角色:

   1.Product(产品角色):定义具体产品的类,如产品有哪些东西组成。

   2.Builder(抽象创建产品角色):创建产品的抽象接口。

   3.ConcreteBuilder(实际创建产品角色):继承Builder,实际创建产品过程的类。

   4.Director(指挥者角色):分配去创建产品的角色。

   举例说明:

   老板叫你写一份活动策划方案:

   (1)产品角色(Product):方案-包含时间、人物、地点:

public class ActivityPlan {
    private String mTime;
    private String mPeople;
    private String mAddress;

    public void setmTime(String mTime) {
        this.mTime = mTime;
    }

    public void setmPeople(String mPeople) {
        this.mPeople = mPeople;
    }

    public void setmAddress(String mAddress) {
        this.mAddress = mAddress;
    }
}

 

(2)抽象创建产品角色(Builder)

public abstract class Bulider {
    public abstract void writeTime();//写时间
    public abstract void writePeople();//写人物
    public abstract void writeAddress();//写地点

    public abstract ActivityPlan write();//返回写好的文档
}

 

  (3)实际创建产品角色(ConcreteBuilder

  

public class ConcreteBuilder extends Bulider{
    private ActivityPlan mPlan = new ActivityPlan();

    @Override
    public void writeTime(String time) {
        mPlan.setmTime(time);

    }

    @Override
    public void writePeople(String people) {
        mPlan.setmPeople(people);
    }

    @Override
    public void writeAddress(String address) {
        mPlan.setmAddress(address);
    }

    @Override
    public ActivityPlan write() {
        return mPlan;
    }
}

 

(4)指挥者角色(Director)

public class Director {
    private Bulider mBulider = null;
    public Director(Bulider bulider){
        mBulider = bulider;
    }
    //老板叫你写方案
    public void toWrite(String time,String people,String address){
        mBulider.writeTime(time);
        mBulider.writePeople(people);
        mBulider.writeAddress(address);
    }
}

 

(5)具体使用:

Bulider bulider = new ConcreteBuilder();
Director director = new Director(bulider);

director.toWrite("2019-03-22","小明","广场");

 

四.模式优缺点:

  1.优点:

     (1)具有良好的封装性,隐藏内部构建产品的过程及细节。

     (2)建造者之间相互独立,易于扩展,相互之间不受影响。

   2.缺点:

   (1)使用范围限制:创建的产品具有较多的共同点,如产品差异较大,不适合使用该模式。

   (2)如果产品内部接口复杂,将导致系统变得很庞大。

 

五.在Android中的使用:

  建造者模式在Android中很多地方多有使用到,如:

  1.AlertDialog:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("对话框")
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });

 2.Retrofit

private Retrofit getRetrofit(String url){
    return new Retrofit.Builder()
            .baseUrl(url)
            .client(MyOkHttpClient.getInstance().getOkHttpClient())
            .addConverterFactory(FastConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();
}


 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值