模仿常用框架Builder初始化数据,如何优雅地装逼
2017-03-03 14:54
337 查看
作者:夏至 欢饮转载,也请保留这段申明
http://blog.csdn.net/u011418943/article/details/60140099
首先,先看一下 okhttp 的数据初始化:
是不是结构清晰,感觉就很高大上呢?
不管你信不信,反正我信了;最近在搞一个下载器的项目,项目在添加下载任务的时候,我是不是也可以这样来初始化呢?所以研究了一下上面的那种实现方法,发现其实挺简单的。
其实就是在实体类中,提供一个静态类,里面再添加共有方法即可,如:
我把 get 和 set 去掉了,然后你注意 Builder 类里面的方法就可以了。那么,我们的初始化就可以这样写了:
打印如下:
这样是不是感觉自己叼了很多,用了这种方式,是不是同事看到尖叫,老板看了直刷666。
不管你信不信,反正我还是信了。
http://blog.csdn.net/u011418943/article/details/60140099
首先,先看一下 okhttp 的数据初始化:
Request.Builder builder = new Request.Builder(); final Request request = builder .get() .url(url) .build();
是不是结构清晰,感觉就很高大上呢?
不管你信不信,反正我信了;最近在搞一个下载器的项目,项目在添加下载任务的时候,我是不是也可以这样来初始化呢?所以研究了一下上面的那种实现方法,发现其实挺简单的。
其实就是在实体类中,提供一个静态类,里面再添加共有方法即可,如:
public class Taskinfo { private String name; //文件名 private String url; //文件url private int threadcount; //文需要的线程 public Taskinfo(Builder builder) { this.name = builder.name; this.url = builder.url; this.threadcount = builder.threadcount; } public static class Builder{ private String name; private String url; private int threadcount; public Builder setName(String name){ this.name = name; return this; } public Builder setUrl(String url){ this.url = url; return this; } public Builder setThreadcount(int threadcount){ this.threadcount = threadcount; return this; } public Taskinfo build(){ return new Taskinfo(this); } } @Override public String toString() { return "Taskinfo{" + "name='" + name + '\'' + ", url='" + url + '\'' + ", threadcount=" + threadcount + '}'; } }
我把 get 和 set 去掉了,然后你注意 Builder 类里面的方法就可以了。那么,我们的初始化就可以这样写了:
public class MainActivity extends AppCompatActivity { private static final String TAG = "zsr"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Taskinfo taskinfo = new Taskinfo.Builder() .setName("有道词典") .setUrl("www.baidu.com") .setThreadcount(5) .build(); Log.d(TAG, "onCreate: "+taskinfo); } }
打印如下:
D/zsr: onCreate: Taskinfo{name='有道词典', url='www.baidu.com', threadcount=5}
这样是不是感觉自己叼了很多,用了这种方式,是不是同事看到尖叫,老板看了直刷666。
不管你信不信,反正我还是信了。
相关文章推荐
- 模仿OKhttp框架Builder初始化数据,如何优雅地装逼
- 如何用mui框架实现城市选择中常用城市以及根据城市名称的首字母铺数据(页面效果类似手机通讯录那种)
- 一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
- 5.如何使用常用的6种方式对数据进行转换(二)
- 七招常用技巧教你如何快速恢复硬盘数据
- ORACLE常用命令总结-用户如何有效地利用数据字典
- 【原创】SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存,利用Spring托管,并完成reload功能
- 如何使用常用的6种方式对数据进行转换(一)
- spring 框架的xml文件如何读取properties文件数据
- 关于网站大并发情况下的数据的初始化如何处理。
- 一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
- 使用DetailsView的数据插入功能时,如何初始化参数,如何取得新纪录的主键(主键类型为uniqueidentifier)
- CYQ.Data 轻量数据层之路 优雅V1.4版本 框架开源
- jqGrid如何设置jqGrid第一次初始化时不加载任何数据?实现方法!
- 如何使用javascript的PureMVC框架 - 初始化
- 一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
- CYQ.Data 轻量数据层之路 框架如何应对数据库变化
- 一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
- php的CodeIgniter框架中如何过滤数据(将危险数据如html类型的数据过滤后提交到数据库)
- Oracle初学者需要知道的常用数据表如EMP、DEPT、SALGRADE等是如何操作的?图解操作