前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android -建造者模式

Android -建造者模式

作者头像
android_薛之涛
发布2018-09-11 17:36:16
5170
发布2018-09-11 17:36:16
举报
文章被收录于专栏:Android-薛之涛Android-薛之涛

  今天我们来聊一聊我们经常用到的模式-建造者模式(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对象消耗内存,不过优点大于缺点。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.06.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档