Android 链式调用(方法链)

参考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<String>()
                    {
                        @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:不太利于代码调试

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,270评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,200评论 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,268评论 8 183
  • 1. 刘涛 刘氏秦政会稽乡,涛天巨浪汹心房。皇天后土且为证,帝王他日必为邦。 2. 程门立雪志毅坚,怡然不惧朔风...
    freecast阅读 2,939评论 1 1
  • 学会倾听: 沟通最重要的不是察言观色,也不是善变的口才,而是学会倾听,通过倾听发现客户的真是需求,了解客户的真正意...
    简单做事阅读 1,774评论 0 0