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模式在开发中的应用的更多相关文章
- Builder模式在Java中的应用
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Build ...
- 【Android进阶】在开发中Application到底用来做什么
首先,在一个Android程序中,有且只有一个Application对象,在程序开始跑起来的时候,首先执行Application的onCreate方法,这是一个Android应用的入口,在开发中,我们 ...
- Builder模式在Java中的应用(转)
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Build ...
- 详细解说Android权限在安卓开发中
android.permission.ACCESS_CHECKIN_PROPERTIES //允许读写访问”properties”表在checkin数据库中,改值可以修改上传 android.perm ...
- 【IE】浏览器模式与文档模式 及其开发中处理方式
原文:http://blog.csdn.net/neo_liu0000/article/details/7589731 什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和 ...
- 解决使用微软模拟器VS Emulator for Android在VS2017 Xamarin开发中不能调试程序的问题。
在使用VS2017 XAMARIN调试Android应用程序时,屏幕闪一下,进入不了调试(使用谷歌的模拟器可以调试,但是太慢), 我们现在来解决一下这个问题. 第一步:打开Hyper-V管理器 第二步 ...
- Android - Builder模式
https://github.com/simple-android-framework-exchange/android_design_patterns_analysis/tree/master/bu ...
- Java Builder 模式,你搞懂了么?
加油.png 前言:最近闲来无事的时候想着看看一些平常用的三方库源码,没想到看了之后才知道直接撸源码好伤身体,一般设计优秀的开源库都会涉及很多的设计模式,就比如 android 开发使用频繁的 okH ...
- 同事写了一个疯狂的类构造器,我要疯了,Builder 模式都不会么?!
疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务 ...
随机推荐
- SQL Server代理(5/12):理解SQL代理错误日志
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL ...
- CP/IP,SPDY,WebSocket 三者之间的关系
按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议.在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议.一.HTTP的 ...
- Ionic2学习笔记(2):自定义Component
作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5536298.html 上一篇提到,Ionic2提供了很多Co ...
- dp - 2016腾讯笔试 A
2016腾讯笔试 A Problem's Link -------------------------------------------------------------------------- ...
- ASP.NET MVC显示HTML字符串
一些html经HtmlEncode后,如“<span>测试数据</span>”.现需要把这些内容正常显示于asp.net mvc的视图内. 举个例子来解决与说明,先创建一个mo ...
- GitHub简单教程
Hello World程序是计算机编程中由来已久的惯例,这是一个当你在学习新事物的时候开始的一个简单的小练习.让我们开始GitHub的"Hello World". 你将学会: - ...
- ASP.NET页面中去除VIEWSTATE视
保存页的所有视图状态信息和控件状态信息. 源码:http://www.jinhusns.com/Products/Download/?type=xcj 作者在早期参与的项目中曾遇到这样的需求:基于SE ...
- windbg学习进阶之——windbg环境变量配置
接触性能调优以来一直想学下windbg分析dump,每次看老师几个命令就能找到很底层的问题原因那简直就是羡慕加崇拜啊~但是这接近一年了,愣是没啥进展呢,主要就是在今天整理的这部分卡住了...这理由找的 ...
- Windows下查看JDK是否安装以及安装路径
查看JDK是否已经安装,可以在cmd窗口里输入java -version,如果没有提示出错,就表示已经安装. 查看JDK的安装路径,可以输入java -verbose,会返回很多信息,其中就包含了JD ...
- webservice入门(1)
前段时间学习了webservice的用法,虽然只是一些简单的用法,但是如果久了还是会忘记的,所以将学到了记录下来. 一:schema和http协议. 1.schema约束: schema规范中: . ...