Android开发Android开发Android技术知识

Android -建造者模式

2018-06-24  本文已影响173人  薛之涛

  今天我们来聊一聊我们经常用到的模式-建造者模式(Builder Pattern).

一:

1.什么是建造者模式?

建造者模式 的定义是:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]。

比如我们常见的AlertDialog,Glide等都是运用的建造者模式,拿Glide来说:

Glide.with(this).load(R.drawable.ic_launcher).into(iv); 没有通过new的方式,然后一个一个set其属性。而是通过这种链式的调用赋值,然后达到给相关对象赋值的目的。

当然AlertDialog创建会更明显:

new AlertDialog.Builder(this)

  .setTitle("标题")

  .setMessage("内容")

  .setNegativeButton("取消", new DialogInterface.OnClickListener() {

      @Override      public void onClick(DialogInterface dialog, int which) {

      }

  })

  .setPositiveButton("确定", new DialogInterface.OnClickListener() {

      @Override      public void onClick(DialogInterface dialog, int which) {

      }

  })

  .create().show();

2.构造者模式有什么好处?

      建造模式是将复杂创建过程封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心,也不知道,具有良好的封装性,可以使客户端不用知道产品内部组成的细节。.建造者独立,容易扩展。就是解耦。

3.建造者模式的构成,一般的建造者模式由四部分构成。

Product:被构造的复杂对象

Builder:抽象接口

ConcreteBuildr:Builder接口的具体实现

Director:Builder接口的构造者和使用者

    但我一般在开发过程中,跟传统开发者模式不太一样,做了一点点改变。但本质都是一样的,话不多说,撸代码。

二:代码部分。

    先说一说我们的思路:我们这里要做一个学生管理系统,每个新入职的学生都必须填写自己的姓名,性别,年龄,手机号(选填),地址(选填),兴趣爱好(选填)”然后获取相关学生对象,如果传统方式就是创建Student对象,然后一个一个set(),get()啦,我们来看一看如何用建造者模式实现。

     第一步:创建StudentConfig配置类

第二步:我们再看看内部类StudentBuilder;

  也没啥说的!

效果:

调用代码:StudentConfig studentConfigOne=new StudentConfig.StudentBuilder("张三","男","20").setAddress("恒                    山").setPhone("12345678910").setHobby("传统武术").createStudentConfig();    

总结:

    这就是稍微变动后的Builder Pattern,在开发比较常用,通常作为配置类的构建器将配置的构建和表示分离,通过链式实现使得代码更简洁、易懂。缺点呢就是会产生多余的Builder对象消耗内存,不过优点大于缺点。

上一篇下一篇

猜你喜欢

热点阅读