最近在学习图片加载框架Glide的时候,被他精简的写法震惊了。一句话,就可以搞定。

Glide.with(mContext)
.load(url)
.centerCrop()
.placeholder(R.drawable.default_img)
.crossFade()
.into(mImageView);

 

同时在年初的时候,学习RXJava的时候,用链式编程很优雅。

     Observable
.just( "1" , "2" )
.subscribeOn(Schedulers.io() )
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
}
}) ;

  

今天就来学习一下,建造者模式在Android中简单应用 。

Builder 的好处

  • 代码可读性好,只需要写一句代码,链式编程很优雅
  • 方便。通过不同的组合就可以创建不同的对象
  • 解耦。不需要知道细节,将对象本身与对象构造过程分离。

Builder 模式要怎么写?

package com.app.lib;
/**
* Created by ${zyj} on 2016/6/27.
*/
public class UserMoule {
private String id ;
private String name ;
public UserMoule( String id , String name ){
this.id = id ;
this.name = name ;
}
static class Builder {
private  String id ;
private  String name ;
public Builder setId(String id) {
this.id = id;
return this ;
}
public Builder setName(String name) {
this.name = name;
return this ;
}
public UserMoule create(){
return new UserMoule( id , name ) ;
}
}
}

  调用

      new UserMoule.Builder()
.setId( "id")
.setName( "json")
.create() ;

  

为什么 Builder 要用 Static 修饰?

一般写内部类的意图都是为了说明该类和宿主类关系密切,而private , static , final 这些可以单独拿出来说,static这个区别比较大,没有static修饰,说明此类必须依赖宿主类的对象;而有static修饰,就不依赖与对象的存在了,类名. 即可,整体类似方法上添加static。private这玩意,完全取决于你是否希望将此类暴露出去;final则是为了标明该类不可继承修改.

而且

使用static就如同你新建了一个JAVA文件,静态内部类不会保持对外部类的引用。如果你的builder需要外部类的引用,那它Build就没有意义了,所以必须加static。

总结

  • 使用 Builder 模式可以解耦,更方便地构造不同的对象
  • Builder 类要用 static 修饰
  • 这里使用了简化的Builder模式,将抽象建造者省略,并且也省略了指导者角色 。

相关链接:http://www.jianshu.com/p/5d9db54892c8

Android Builder模式在开发中的应用相关推荐

  1. Android记录22-关于开发中账号绑定的逻辑处理

    Android记录22-关于开发中账号绑定的逻辑处理  转载请注明:IT_xiao小巫    博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要跟大家分享的是开发中我 ...

  2. Builder 模式在 Guava 中的应用

    在项目开发中,我们经常用到缓存.它可以非常有效地提高访问速度. 常用的缓存系统有 Redis.Memcache 等.但是,如果要缓存的数据比较少,我们完全没必要在项目中独立部署一套缓存系统.毕竟系统都 ...

  3. Android : Builder模式 详解及学习使用

    在此声明:以下内容由书籍 <Android高级进阶>学习而来. Builder模式是一种设计模式,最初被介绍于<设计模式:可复用面向对象软件的基础>,目前在Java及Andro ...

  4. android builder模式,模式设计(三:Builder模式) (转)

    模式设计(三:Builder模式) (转)[@more@] builder 本文中我将采用生产汽车的例子来讲解builder 模式. 考虑如下问题:我要建造一部车,我们希望将这个复杂的的构建与其表示分 ...

  5. android java 指针异常处理,Android程序员日常开发中异常总结

    CaptainAndroid.png Java异常 平时开发中遇到的java异常很多,因为引起原因一目了然,当然也有不好解决的,比如一个简单的空指针异常你可能始终无法找到其为空的原因,甚至使用前还做了 ...

  6. Android短视频app开发中如何实现上下滑动切换效果

    在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条.这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上 ...

  7. android音乐播放器底部,android音乐播放器开发中所遇到的bug及解决方法

    这几天在写一个android版的音乐播放器,在开发过程中遇到了一些小问题 小bug,最后经过一番调试与查找 终于发现问题所在.现在将开发中的问题与解决方法分享给大家... 一,音乐播放器的界面我采用的 ...

  8. android builder模式 插件,如何在Kotlin中实现Builder模式?

    首先,在大多数情况下,您不需要在Kotlin中使用构建器,因为我们有默认和命名参数 . 这使您可以写 class Car(val model: String? = null, val year: In ...

  9. android mvp模式例子_Android中mvp模式使用实例详解

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...

最新文章

  1. 第二冲刺站立会议01
  2. C语言 读取文件内容
  3. [register]-ARM64重要寄存器介绍
  4. 为什么LED灯会越用越暗?
  5. tomcat启动流程分析
  6. Java 打印 99 乘法表
  7. 人工智能产业链深度透析—产业应用医疗篇
  8. 转行学AI,如何选择适合的方向
  9. [BJOI2019]奥术神杖(分数规划+AC自动机+DP)
  10. python自学行吗-有编程基础Python自学行吗?
  11. 电力巡检系统无人机模块
  12. 写了三年程序,我25了.
  13. java:线程的六种状态
  14. python大麦网抢票_抢票攻略-大麦网
  15. 自定义id的几种思路分享以及税务单据编号实现
  16. 解构沉浸式:AI+AR+Design 线下分享会【NSR主办的纽约场】
  17. keyword html seo优化,Meta标签关于TDK(title、description、keyword)的优化
  18. C语言中的找特殊数字问题
  19. skynet:fork
  20. python3将base64格式的图片保存为MD5值的图片

热门文章

  1. mysql创建库和表确保utf8_mysql创建utf8数据库
  2. revit2019 导出obj_revit、3dmax导出object文件软件操作说明.doc
  3. android camera 实时滤镜,【Camera】Android平台Camera实时滤镜实现方法
  4. c 语言怎么编译 .dll,将你的 C 语言代码编译成 .NET
  5. opencv图像处理(二)
  6. 科研实习 | 牛津大学英仕曼量化金融研究院招收机器学习+金融访问学生
  7. 据调查95%以上的AI从业者不具备修改模型或者提出新模型的技术能力
  8. 深圳内推 | 腾讯AI Lab自然语言处理中心招聘NLP研究型实习生
  9. 双边分支网络:兼顾特征和分类的长尾问题解决方案
  10. 自然语言处理太难?按这个方式走,就是砍瓜切菜!