清潔和新Android架構(gòu)的認(rèn)知訴求

一個根本性的變化即將改變Android的核心工作方式。但你為什么要關(guān)心?而且,為什么這是一件好事?讓我們來看看。
Android的新架構(gòu)組件現(xiàn)已正式并固化。毫無疑問,View Models和LiveData等架構(gòu)組件將使Android開發(fā)世界中新手的生活變得更加輕松。

創(chuàng)新互聯(lián)公司主營豐澤網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),豐澤h5重慶小程序開發(fā)公司搭建,豐澤網(wǎng)站營銷推廣歡迎豐澤等地區(qū)企業(yè)咨詢

但是對于經(jīng)驗豐富的開發(fā)人員來說,問題將不可避免地出現(xiàn)在新的架構(gòu)組件如何以及在何處與干凈架構(gòu)的概念一致,正如Bob叔叔所倡導(dǎo)的那樣。

你可能會問我們?yōu)槭裁匆獡?dān)心干凈的建筑?答案很簡單 - 清潔架構(gòu)基于人類與軟件開發(fā)周期的關(guān)系,這意味著它歸結(jié)為一個簡單而單一的“關(guān)注點分離”原則。清潔架構(gòu)不僅限于特定的平臺解決方案,Android Lifecycle的概念及其周圍的解決方案也是如此。

考慮到這個問題,我想看看谷歌最近的一個樣本,使用他們的架構(gòu)組件,如何符合清潔架構(gòu)的基本概念。清晰體系結(jié)構(gòu)的核心概念在圖片中進(jìn)行了總結(jié),對于任何了解這里提出的清潔體系結(jié)構(gòu)的人來說都非常熟悉:
清潔和新Android架構(gòu)的認(rèn)知訴求

清潔架構(gòu)中的核心原則

“內(nèi)圈中的任何東西都不能知道外圈中的某些東西。特別是,外圈中聲明的東西的名稱不能被內(nèi)圈中的代碼所提及。這包括函數(shù),類,變量,或任何其他指定的軟件實體?!?/p>

我拍的樣本是Google 代碼實驗室的“帶有視圖的房間”樣本。

盡管有許多使用方法的清潔架構(gòu)實現(xiàn),如MVP,MVVM等,它們?yōu)锳ndroid空間提供了可行的解決方案,但我的問題是,如果我們能夠維護(hù)清潔架構(gòu)的核心概念,那就是:“內(nèi)部圓圈中的代碼不得提及外部圓圈中聲明的內(nèi)容的名稱“不帶任何框架,只需使用Android體系結(jié)構(gòu)組件即可。

“帶有視圖的房間”是一個簡單的應(yīng)用程序,它列出了數(shù)據(jù)庫中的單詞,并允許您添加新單詞。

應(yīng)用程序中有八個類:

1.MainActivity

  1. NewWordActivity
    3.Word
  2. WordDao
    1. WordListAdapter
  3. WordRepository
  4. WordRoomDatabase
    1. WordViewModel
      沒有太大困難,我可以實現(xiàn)理想的組織,成功率約為90%:
      清潔和新Android架構(gòu)的認(rèn)知訴求

一些擔(dān)憂

在 LiveData 作為一個元素不會在組織的任何地方出現(xiàn)。雖然確實 LiveData 是一個設(shè)施/機(jī)制,但它不是政策意義上的實體。

干凈的架構(gòu)說,“外圈是機(jī)制。內(nèi)圈是政策?!?在此基礎(chǔ)上,它將DB放在最外層。但是,如果不打破核心原則,我無法將DB放在外圈。

我知道這更多地表明當(dāng)前技術(shù)中的數(shù)據(jù)庫如何變得更加廣泛,而不是實現(xiàn)細(xì)節(jié)。

我唯一關(guān)注的另一個問題是,當(dāng)ViewModel 坐在UI控制器中時,關(guān)注細(xì)節(jié)的分離感 ,而 ListAdapter 應(yīng)該處理顯示的數(shù)據(jù)。適配器能夠觀察任何變化的視圖模型。如果我們這樣做,那么我們可以說適配器幾乎決定了從存儲庫端顯示的數(shù)據(jù)。UI負(fù)責(zé)維護(hù)組件的正確UI外觀??紤]到這一點,我在適配器中移動了視圖模型,它向UI公開了一個額外的方法“insert(..)”。修改后的代碼在這里:ViewModel的房間。

通過這樣做,我可以更清楚地了解干凈的架構(gòu)圈子,它 LiveData 是存儲庫使用的內(nèi)部工具
清潔和新Android架構(gòu)的認(rèn)知訴求

結(jié)論

Android清潔架構(gòu)是一個可以在沒有大量框架的情況下實現(xiàn)的目標(biāo),只要我們專注于關(guān)注的認(rèn)知分離,以及測試設(shè)施,它在Kotlin中變得更加語言驅(qū)動,而不會打擾關(guān)于工具和設(shè)施的性質(zhì)。我們始終堅持這樣的原則:“總的來說,你走的越遠(yuǎn),軟件就越高?!?更高級別僅僅意味著更具包容性,就像現(xiàn)在的數(shù)據(jù)庫實現(xiàn)一樣。我們不再關(guān)心它是什么類型的DB,只要它保持暴露的接口完好無損。由于開源的能量,我們可以通過認(rèn)知鏡頭看到今天的工具,而不是將我們的手和思想聯(lián)系起來。反過來,這也使得開源移動得更快。

網(wǎng)頁標(biāo)題:清潔和新Android架構(gòu)的認(rèn)知訴求
網(wǎng)站地址:http://bm7419.com/article16/gejsgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司定制開發(fā)、動態(tài)網(wǎng)站、虛擬主機(jī)、ChatGPT、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)