Retrofit的设计模式 -- 外观模式

特点

个人理解外观模式就是两个字: 封装.

Paste_Image.png
  1. 一个大模块本身包含很多小模块,这些小模块本身是对外屏蔽的.
  2. 各个模块可以通过这个大模块进行很好的通信,减少了相互间的依赖.
  3. 使用者只是使用一个大模块对象,成本低.
  4. 如果后期子模块有改动或者替换,只要不改动大模块对外的接口,对使用者来说不受任何影响,体现了开闭原则.

缺点

因为一个大模块包含那么多小模块,需要把各个模块的功能都提供出去,这样很容易导致大模块的API很多,导致接口膨胀.

使用Demo

因为公司APP使用了Hybird的开发方式,所以使用了大量的WebView,每一个WebView页面都会涉及到加载中、加载失败、网络异常、正常显示、异常显示自定义错误页面、缓存处理等情况,并且业务还需要加上下拉刷新,因为是重复操作并且WebView和下拉刷新之间有通信,所以非常符合外观模式的场景,就封装了一个控件出来GitHub地址GWebView

webview.gif

本控件特点:

  1. 封装了WebView中一些繁琐的设置,比如WebSettings、WebViewClient、WebChromeClient等,并且如果默认设置不满足要求也可以自定义.
  2. 下拉头本来用的SwipeRefreshLayout,因为产品经理不喜欢那个下拉头,所以在此基础上改造了一下,如果不能满足要求,这个下拉头也可以自定义.
  3. SwipeRefreshLayout和�WebView的滑动冲突已经解决,就是加一层布局ScrollView,并且封装了他们直接滑动的逻辑.
  4. 布局中增加了默认的加载中、加载失败、无网络布局,这样不用每次都判断,同上也提供了自定义接口.

总结

特点:封装
就是把各个模式组合在一起,能更好的使用,避免繁琐的每次配置,并且各个模式也可以更好的通信,最好的体现就是第三方SDK.

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,956评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 现在网上很多身材好的漂亮女孩大肆秀身材,什么A4腰,反手摸肚脐等等各种秀,扎了好多女人的心。那么为什么她们的腰那么...
    小易教瘦阅读 393评论 0 0
  • 众所周知,JavaScript是单线程,同一时刻只会有一段代码在运行。JavaScript又具有异步的特性,这二者...
    pixels阅读 363评论 0 2
  • 昨晚上喝了一些酒,站在在地铁站里,渴望自己能像个幽灵一样四处飘荡,飘到天花板上,随着飞驰的列车冲进黑乎乎的隧道里,...
    豚月阅读 232评论 0 0