Android Builder模式在开发中的应用
最近在学习图片加载框架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模式在开发中的应用相关推荐
- Android记录22-关于开发中账号绑定的逻辑处理
Android记录22-关于开发中账号绑定的逻辑处理 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要跟大家分享的是开发中我 ...
- Builder 模式在 Guava 中的应用
在项目开发中,我们经常用到缓存.它可以非常有效地提高访问速度. 常用的缓存系统有 Redis.Memcache 等.但是,如果要缓存的数据比较少,我们完全没必要在项目中独立部署一套缓存系统.毕竟系统都 ...
- Android : Builder模式 详解及学习使用
在此声明:以下内容由书籍 <Android高级进阶>学习而来. Builder模式是一种设计模式,最初被介绍于<设计模式:可复用面向对象软件的基础>,目前在Java及Andro ...
- android builder模式,模式设计(三:Builder模式) (转)
模式设计(三:Builder模式) (转)[@more@] builder 本文中我将采用生产汽车的例子来讲解builder 模式. 考虑如下问题:我要建造一部车,我们希望将这个复杂的的构建与其表示分 ...
- android java 指针异常处理,Android程序员日常开发中异常总结
CaptainAndroid.png Java异常 平时开发中遇到的java异常很多,因为引起原因一目了然,当然也有不好解决的,比如一个简单的空指针异常你可能始终无法找到其为空的原因,甚至使用前还做了 ...
- Android短视频app开发中如何实现上下滑动切换效果
在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条.这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上 ...
- android音乐播放器底部,android音乐播放器开发中所遇到的bug及解决方法
这几天在写一个android版的音乐播放器,在开发过程中遇到了一些小问题 小bug,最后经过一番调试与查找 终于发现问题所在.现在将开发中的问题与解决方法分享给大家... 一,音乐播放器的界面我采用的 ...
- android builder模式 插件,如何在Kotlin中实现Builder模式?
首先,在大多数情况下,您不需要在Kotlin中使用构建器,因为我们有默认和命名参数 . 这使您可以写 class Car(val model: String? = null, val year: In ...
- android mvp模式例子_Android中mvp模式使用实例详解
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...
最新文章
- 第二冲刺站立会议01
- C语言 读取文件内容
- [register]-ARM64重要寄存器介绍
- 为什么LED灯会越用越暗?
- tomcat启动流程分析
- Java 打印 99 乘法表
- 人工智能产业链深度透析—产业应用医疗篇
- 转行学AI,如何选择适合的方向
- [BJOI2019]奥术神杖(分数规划+AC自动机+DP)
- python自学行吗-有编程基础Python自学行吗?
- 电力巡检系统无人机模块
- 写了三年程序,我25了.
- java:线程的六种状态
- python大麦网抢票_抢票攻略-大麦网
- 自定义id的几种思路分享以及税务单据编号实现
- 解构沉浸式:AI+AR+Design 线下分享会【NSR主办的纽约场】
- keyword html seo优化,Meta标签关于TDK(title、description、keyword)的优化
- C语言中的找特殊数字问题
- skynet:fork
- python3将base64格式的图片保存为MD5值的图片
热门文章
- mysql创建库和表确保utf8_mysql创建utf8数据库
- revit2019 导出obj_revit、3dmax导出object文件软件操作说明.doc
- android camera 实时滤镜,【Camera】Android平台Camera实时滤镜实现方法
- c 语言怎么编译 .dll,将你的 C 语言代码编译成 .NET
- opencv图像处理(二)
- 科研实习 | 牛津大学英仕曼量化金融研究院招收机器学习+金融访问学生
- 据调查95%以上的AI从业者不具备修改模型或者提出新模型的技术能力
- 深圳内推 | 腾讯AI Lab自然语言处理中心招聘NLP研究型实习生
- 双边分支网络:兼顾特征和分类的长尾问题解决方案
- 自然语言处理太难?按这个方式走,就是砍瓜切菜!