参考Android之链式调用(方法链)

最近在学习总结Android属性动画的时候,发现Android的属性动画设计采用了链式调用的方式,然后又回顾了一下了以前接触的开源框架Glide也是采用链式调用的方式,还有最近火的一塌糊涂的RxJava也是采用链式调用,为何如此之多的开源项目采用这种设计方式,今天来对比学习一下。

Glide.with(this).load(imageUrl).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(imageView);
    //通过返回this来实现    public BnRequestHandler url(String url)    {        URL = url;        return this;    }         BnRequestHandler handler = new BnRequestHandler(getActivity());            handler.url("migraine/hq/")                    .get()                    .executeAsObservable()                    .subscribeOn(Schedulers.io())                    .observeOn(Schedulers.io())                    .subscribe(new Subscriber()                    {                        @Override                        public void onCompleted()                        {                        }                        @Override                        public void onError(Throwable e)                        {                        }                        @Override                        public void onNext(String s)                        {                }    }
MsgInfo msgInfo = new MsgInfo();msgInfo.setOwnerId("100011002");msgInfo.setRelatedId("1000110003");msgInfo.setBody("hello 普通调用");msgInfo.setType(MsgInfo.Type.TEXT);msgInfo.setDirect(MsgInfo.Direct.SEND);msgInfo.setStatus(MsgInfo.Status.SENDING);msgInfo.setTime(System.currentTimeMillis());//下面是链式调用MsgInfo msgInfo = new MsgInfo();msgInfo.setOwnerId("100011002").setRelatedId("1000110003").setBody("hello 链式调用").setType(MsgInfo.Type.TEXT).setDirect(MsgInfo.Direct.SEND).setStatus(MsgInfo.Status.SENDING).setTime(System.currentTimeMillis());

对比两者优劣
普通:
  1:维护性强
  2:对方法的返回类型无要求
  3:对程序员的业务要求适中
链式:
  1:编程性强
  2:可读性强
  3:代码简洁
  4:对程序员的业务能力要求高
  5:不太利于代码调试

个人觉得链式调用很像装饰模式

更多相关文章

  1. 高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构
  2. Android NDK编译 ndk-build方式
  3. WebView与 JavaScript 交互方式
  4. Android 开发使用 Gradle 配置构建库模块的工作方式
  5. 在android中使用Post方式提交数据
  6. android在build中配置资源路径的方式
  7. android 7种网络连接方式--IT蓝豹
  8. Android 使用WebView加载含有echarts的页面,截图不显示的解决方式
  9. Android传感器、语音识别、定位系统、Google Map API、快捷方式

随机推荐

  1. Android学习――HorizontalScollview水平
  2. Android设置AlertDialog点击按钮对话框不
  3. layout_weight属性图解
  4. android――屏幕分辨率
  5. Android-手势识别(普通手势识别:上 下 左
  6. 深入源码分析Handler 消息机制 、Looper
  7. 常见Android(安卓)Native崩溃及错误原因
  8. Android开发之Android开发规范
  9. Android(安卓)Studio轻松上手指南
  10. android 启动 service 的两种方法