最近在学习图片加载框架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

最新文章

  1. org.hibernate.HibernateException: A collection with cascade=&quot;all-delete-orphan&quot; was no longer referenced by the owning entity instance:
  2. Cannot create a server using the selected type.
  3. 在express站点中使用ejs模板引擎
  4. 使用Nginx解决IIS绑定域名导致应用程序重启的问题
  5. 使用HttpsURLConnection发送POST请求
  6. 洛谷 P1908 逆序对 Label:归并排序||树状数组 不懂
  7. (总结)CentOS Linux下VNC Server远程桌面配置详解
  8. JBoss for luna
  9. No1_2. 流程控制_java学习笔记
  10. Paip.断点调试MYSQL存储过程跟函数的解决方案大法
  11. 控制公司 Controlling Companies
  12. UNIX环境高级编程——信号说明列表
  13. Android使用统计图AChartEngine 来展示数据
  14. php编写生成酷炫验证码
  15. easyui获取选中行上一行的数据
  16. arithmetic-02
  17. TC SRM600 DIV2
  18. WinEdt 6+SumatraPDF -- 实现TeX文档和PDF文件正反向搜索
  19. 螺旋折线|2018年蓝桥杯B组题解析第七题-fishers
  20. CRM - 起步

热门文章

  1. AppleScript的字典怎么看怎么用
  2. XML基础学习02&lt;linq to xml&gt;
  3. VUE 表单元素双向绑定总结
  4. 扫描线 + 线段树 : 求矩形面积的并 ---- hnu : 12884 Area Coverage
  5. ASP.NET MVC 学习之路由(URL Routing)
  6. 【Linux_Fedora_系统管理系列】_1_用户登录和系统初始配置
  7. php中的常用数组函数(八) 排序函数汇总(sort、rsort、usort、asort、uasort、arsort、ksort、uksort、krsort、natsort、natcasesort、array_multisort)
  8. Javascript——闭包、作用域链
  9. jQuery Mobile页面返回无需重新get
  10. 学习笔记:利用GDI+生成简单的验证码图片