特點
個人理解外觀模式就是兩個字: 封裝.
Paste_Image.png
- 一個大模塊本身包含很多小模塊,這些小模塊本身是對外屏蔽的.
- 各個模塊可以通過這個大模塊進行很好的通信,減少了相互間的依賴.
- 使用者只是使用一個大模塊對象,成本低.
- 如果后期子模塊有改動或者替換,只要不改動大模塊對外的接口,對使用者來說不受任何影響,體現了開閉原則.
缺點
因為一個大模塊包含那么多小模塊,需要把各個模塊的功能都提供出去,這樣很容易導致大模塊的API很多,導致接口膨脹.
使用Demo
因為公司APP使用了Hybird的開發方式,所以使用了大量的WebView,每一個WebView頁面都會涉及到加載中、加載失敗、網絡異常、正常顯示、異常顯示自定義錯誤頁面、緩存處理等情況,并且業務還需要加上下拉刷新,因為是重復操作并且WebView和下拉刷新之間有通信,所以非常符合外觀模式的場景,就封裝了一個控件出來GitHub地址GWebView
webview.gif
本控件特點:
- 封裝了WebView中一些繁瑣的設置,比如WebSettings、WebViewClient、WebChromeClient等,并且如果默認設置不滿足要求也可以自定義.
- 下拉頭本來用的SwipeRefreshLayout,因為產品經理不喜歡那個下拉頭,所以在此基礎上改造了一下,如果不能滿足要求,這個下拉頭也可以自定義.
- SwipeRefreshLayout和?WebView的滑動沖突已經解決,就是加一層布局ScrollView,并且封裝了他們直接滑動的邏輯.
- 布局中增加了默認的加載中、加載失敗、無網絡布局,這樣不用每次都判斷,同上也提供了自定義接口.
總結
特點:封裝
就是把各個模式組合在一起,能更好的使用,避免繁瑣的每次配置,并且各個模式也可以更好的通信,最好的體現就是第三方SDK.