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

特点

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

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

缺点

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

使用Demo

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

Retrofit的设计模式 -- 外观模式_第2张图片
webview.gif

本控件特点:

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

总结

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

你可能感兴趣的:(Retrofit的设计模式 -- 外观模式)