日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kotlin 一种以服务为基础的APP架构及源码示例

發布時間:2023/12/9 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kotlin 一种以服务为基础的APP架构及源码示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

由于工作原因,可能會被調到隔壁組。此架構為隔壁組leader設計,并不是我原創,已取得leader同意,此博文只分享我對此架構的理解。特此聲明。

最近看了下Kotlin的一些語法,外加隔壁組采用非常規MVC/MVP/MVVM開發,所以寫此Demo,一是為了練習Kotlin語法,二是為了嘗試使用隔壁組架構進行開發。由于為了練習Kotlin語法,所以在代碼的具體實現上,可能會有些“炫技”的語法。比如能用一種語法實現的功能,Demo用了兩種及以上的語法。了解即可,不必深究。還有一部分“非常規”操作,比如直接就能實現的功能,具體實現上卻“山路十八彎”,注意,這不屬于“語法炫技”的范圍!如果覺得“這里不用山路十八彎”,請往架構方面考慮。

Kotlin

這是一款壁紙應用,雖然功能比較簡單,但是用Java代碼實現起來還是有些代碼。除去框架部分,用kotlin實現,能省很多代碼。比如屬性定義、finViewById、lambda、協程、閉包等等。代碼的具體實現沒撒好說的,還請自行查看源碼。本文的重點是下個部分“服務架構設計”。

服務架構設計

由于公司產品比較多而小,并且有很多共通的功能點,現比較流行的MVC/MVP/MVVM開發模式,運用到實際開發效率不高,所以leader設計了一套開發模式供我們這些菜雞使用。在開發/維護效率上,簡直是賊高!有多高?去年Android組5個人,iOS有25+個。真正的一打五,恐怖如斯!

總體設計

  • 以模塊劃分,這個可以簡單理解成“模塊化開發”中的模塊。每個模塊可以是一個頁面也可以是幾個頁面,以業務/功能劃分。
  • 除主工程外,每個模塊以aar包的形式向其他模塊提供業務/功能
  • 每個模塊分為四個部分,這四個部分分別又是4個arr。
  • Service: 業務接口定義
  • ServiceImpl: 業務接口具體實現
  • ViewService: UI接口定義
  • ViewServiceImpl: UI接口具體實現
  • 所有業務統一管理,針對到**每個**APP,在主工程Application中注冊具體實現
  • 腳本打包,代碼管理
  • 我的一些個人理解

    • 模塊:不吹不黑,總體設計里就是我對模塊的理解…
    • 主工程:一般代碼很少,只放“主頁”相關相關的幾個類,甚至主頁對應的service/serviceImpl都會提供相應的aar。
    • 模塊四元素,四元素遵循“面向接口編程”的理念。每定義一種業務/功能時,先定義好接口規范,這樣的話,在其他相似模塊或者其他APP相似功能的時候,接口是不用修改的,只需要復用或者重寫接口具體實現即可(開閉原則)。這樣的話,還有一些好處,合作開發,AB模塊通過接口調用,有效降耦合,而且AB模塊的開發者并不需要知道對方具體實現。

      • Service:業務接口定義,我理解的這個模塊大概相當于MVP中的P層。
      • ServiceImpl:業務接口具體實現,大概相當于P層的具體實現。P中會持有V的引用,但這里不會,Service/ServiceImpl只負責業務的定義/實現。至于之后做什么,我不管我不管。
      • ViewService:UI接口定義,定義當前模塊有什么UI相關的功能/業務,比如掃碼、登陸等等。
      • ViewServiceImpl:UI接口具體實現。在單APP中作用不是很大,多APP相似UI的時候,效率提升巨大。

      四元素是此框架很精髓的部分,開發效率高很大一部分是由于四元素的設計。對于不同APP差別不大的模塊,可使用相同業務/UI接口,具體APP編寫具體實現即可。

    • 業務管理:由于多個APP的很多業務/UI接口是差不多的,只是業務/UI實現上會有些差別,所以針對到不同的APP,注冊進相應的業務/UI接口實現即可,甚至有些具體實現也是可復用的。
    • 代碼管理:每個APP會有很多模塊,每個模塊下又有四元素,每個模塊和四元素都是module/app的形式,AS每次都去構建的話,估計一次打包沒個十來分鐘搞不定,所以代碼管理采用SNAPSHOT+AAR的形式,將每個AAR以SNAPSHOT的形式依賴,這樣就不用頻繁build每個module/app,每次更新,只更新相應的SNAPSHOT即可。

      我理解的大體架構大概就是上面所描述的,當然,為了解耦還會有一些其他的小技巧,不過這些無傷大雅,demo中也體現了一部分,感興趣可以看下壁紙Demo。

    壁紙APP的說明

    壁紙APP有兩個界面:“主頁”和“預覽頁”,也可以理解為兩個模塊:“主頁模塊”和“預覽模塊”。為了圖方便也為了方便讀者看代碼,這里沒有將對網絡框架的封裝、Util類封裝成通用AAR庫,沒有將預覽模塊寫成單獨的module/app,沒有將每個service/serviceImpl寫成單獨的module/app。說來有些諷刺,比較精髓的部分居然被我一筆略過,這點讀者明白即可。

    碎碎念小心得

    對我而言,架構這個東西說起來有些縹緲的感覺。之前照著現有的MVX模式照搬,鮮有考慮為什么要這么寫?好處是什么?或者說只是看了別人的講解-這么做有bulabula好處。但生搬硬套始終是有些生硬,自己理解甚至能設計出合理的架構才是王道。這也是我非常佩服leader的地方,我有些覺得這已經超出了“小聰明”的程度,堪稱智慧了。我也在下意識提升自己這方面的能力,一起努力吧~

    Demo下載

    壁紙APPDemo: https://github.com/yikousamo/wallpaper

    總結

    以上是生活随笔為你收集整理的Kotlin 一种以服务为基础的APP架构及源码示例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。