Android -建造者模式

作者: 薛之涛 | 来源:发表于2018-06-24 22:00 被阅读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对象消耗内存,不过优点大于缺点。

    相关文章

      网友评论

        本文标题:Android -建造者模式

        本文链接:https://www.haomeiwen.com/subject/jhexyftx.html