如何封裝地圖類庫

前幾天在封裝高德的地圖類庫,這種工作沒什么難度,但是很繁瑣,需要把應用層目前用到的高德地圖API全部去掉換成自己封裝好的地圖包裝類庫,我是這么做的,不知道有沒有更好的辦法

  1. 根據(jù)使用的高德API,對應的創(chuàng)建一個接口,接口里就是這個API在應用層用到的方法
  2. 創(chuàng)建該接口的實現(xiàn)類,如果這個類里有實際地圖的實現(xiàn)類那么這種類都需要在Factory工廠類里提供,這樣切換地圖框架的時候直接在該接口的工廠類里切換接口的實現(xiàn)類即可(如果沒有實際使用第三方地圖框架,那么這種類也不需要去寫一個接口再繼承,直接寫包裝類即可)
  3. 如果包裝類里需要使用實際的第三方地圖框架的API實例,而該API實例不能自己創(chuàng)建而需要在地圖框架的地圖類里get獲取,那么該包裝類應該由可以提供所需參數(shù)的其他包裝類創(chuàng)建
  4. 創(chuàng)建工廠類,工廠類負責創(chuàng)建包裝類的實例,返回值是該包裝類繼承的接口
  5. 調(diào)用時,應用層使用我們自己的包裝類,傳入?yún)?shù)是和具體地圖無關的值,傳給包裝類以后,包裝類用這些值創(chuàng)建實際的地圖所需的實例
  6. 修改應用層代碼,在創(chuàng)建具體地圖類實例的時候,用我們的包裝類代替,參數(shù)傳入地圖類實例所需的原始參數(shù)

舉個例子:
針對高德地圖的AMap我寫了個包裝類的接口IAMapWrap,在該接口里都是在應用層調(diào)用到的方法,其中的參數(shù)也是與實際地圖無關的參數(shù),然后在該接口的實現(xiàn)類GaodeMapWrapImpl里,我用這些參數(shù)創(chuàng)建了實際的地圖類實例,然后在MapWrapFactory里我寫了一個方法來提供這個MapWrap實例,當然返回的是IAMapWrap接口,這樣上層就可以使用這個接口來做地圖的操作了,如果有一天我換成百度的地圖,我只需要在MapWrapFactory里返回BaiduMapWrapImpl就可以了,而應用層是不需要做任何改動的

如果有人有更好的方法,歡迎一起探討

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容