[譯]每個Android開發(fā)者應(yīng)該知道的關(guān)于架構(gòu)的10件事

原文地址:10 things every Android app developer should know about Architecture

在面向?qū)ο蟮睦砟钪校瑔蝹€應(yīng)用程序的體系結(jié)構(gòu)可以簡單地描述為系統(tǒng)中類的放置在什么位置以及它們?nèi)绾瓮ㄐ判奥搿N覀冊趯@些類分組時文狱,描述了這些類的角色和職責(zé)牵舱。

下面列舉了可以幫我們理解架構(gòu)的內(nèi)容:

  1. 架構(gòu)是與語言和平臺無關(guān)的。架構(gòu)是基于編程的基本原則。這些編程的基本原則(SOLID原則或者設(shè)計模式)是穩(wěn)定的,且這些知識可以跨語言和平臺使用辛蚊。投入時間學(xué)習(xí)架構(gòu)可以獲得豐厚的回報。它不僅有助于我們設(shè)計更好的架構(gòu)真仲,還可以提高我們的編碼技能袋马。

  2. 關(guān)于MVP/MVVM的困惑。MVP(Model-View-Presenter)或者MVVM(Model-View-ViewModel)的職責(zé)是從代碼中分離UI秸应。我們使用Presenter或者ViewModel從View(Activity/Fragment)中抽取邏輯相關(guān)代碼虑凛。這一過程涉及到VP或者VVM模塊碑宴,而剩下的Model模塊用于向Presenter或者ViewModel提供數(shù)據(jù)。

    我通成5看到的是Presenter和ViewModel是通過接口和觀察者實現(xiàn)的延柠,但除此之外,它是混亂的锣披。我認為這可以歸咎于將VP / VVM用于應(yīng)用程序的整個架構(gòu)而不是努力塑造模型(M)捕仔。MVP / MVVM作為架構(gòu)模式起著至關(guān)重要的作用,但應(yīng)用程序的架構(gòu)不僅僅是將UI分離盈罐。

  3. 架構(gòu)是重要的,但不是不可或缺:學(xué)習(xí)架構(gòu)是Android應(yīng)用程序開發(fā)人員發(fā)展的后期階段闪唆。其中一個原因是盅粪,即使沒有架構(gòu),我們也能開發(fā)出在功能上出類拔萃應(yīng)用程序悄蕾,為什么要花費額外的時間票顾?我們?nèi)绾握f服我們的老板/客戶,我們花費的額外時間可能沒有任何直接的好處帆调?

    只有在幾個版本之后奠骄,我們才意識到我們所處的混亂,但現(xiàn)在已經(jīng)太晚了番刊。當(dāng)我們一次又一次陷入困境時含鳞,我們開始了解架構(gòu)的必要性。

  4. 架構(gòu)提高可擴展性:如果只有一個版本可以發(fā)布應(yīng)用程序芹务,那么架構(gòu)并不重要蝉绷。事實上,這是我們許多人在開發(fā)應(yīng)用程序時采取的方法枣抱,這是短視的熔吗。如果我必須指出擁有適當(dāng)?shù)募軜?gòu)的最大好處,那就是易于修改及其有效性佳晶。

    確實桅狠,我們無法預(yù)見應(yīng)用程序未來可能成為的一切,但良好的架構(gòu)有足夠的靈活性來適應(yīng)未來未知的變化轿秧。

  5. 架構(gòu)不需要要學(xué)習(xí)專門的知識:對于一個優(yōu)秀的程序員來說中跌,設(shè)計架構(gòu)很自然。這一點與上面第一條是重復(fù)的淤刃。但是它很重要晒他,因此,需要重新聲明一遍逸贾。

    Dagger/RxJava 或者其他工具需要我們學(xué)習(xí)和他們相關(guān)的知識陨仅。在架構(gòu)的情況下津滞,它只是編程原則和指南。我們在編碼方面變得越優(yōu)秀灼伤,我們越能夠更好地可視化應(yīng)用程序的體系結(jié)構(gòu)触徐。

  6. 架構(gòu)需要不斷的實踐和耐心:架構(gòu)就像一顆果樹,我們不能指望它一天就能結(jié)出果實狐赡。設(shè)計架構(gòu)需要時間和精力撞鹉,而且這是一個持續(xù)的過程。應(yīng)用程序中的每個更改都需要在實施之前做出深思熟慮的決定颖侄。
    當(dāng)我們開始采用快捷方式時鸟雏,主要的損害來自應(yīng)用程序架構(gòu)。我們對自己做出的承諾(以后清理代碼)只會被一次又一次地打破览祖。
    我們需要了解我們正在進行的工作孝鹊,否則這將是一個很好的開始,只會在以后失敗展蒂。架構(gòu)是我們對應(yīng)用程序的終身承諾又活。

  7. 谷歌架構(gòu)組件:在2017年,谷歌引入架構(gòu)組件锰悼。架構(gòu)組件不僅僅是為了將混亂從Activity / Fragment轉(zhuǎn)移到ViewModel柳骄。這些“架構(gòu)”組件可以幫助我們設(shè)計應(yīng)用程序的架構(gòu)。這些組件使得實現(xiàn)架構(gòu)變得容易箕般,否則這將是一項艱巨的任務(wù)耐薯。例如,LiveData可以輕松觀察數(shù)據(jù)中的變化隘世,這些變化過于尊重Activity / Fragment的生命周期可柿。人們可能會發(fā)現(xiàn)ViewModel是一種在配置更改中幸存下來的方法,但其真正的含義是幫助我們將UI與邏輯分開丙者。

  8. 我們不必所有人都稱為軟件架構(gòu)師:每一個軟件架構(gòu)師都是一個軟件開發(fā)者复斥,但并不是每一個軟件開發(fā)者都是一個軟件架構(gòu)師。在大型項目中械媒,會有指定的軟件架構(gòu)師目锭。對于他們來說,理解各種架構(gòu)模式以及其工作原理是至關(guān)重要的纷捞。
    作為開發(fā)人員痢虹,理解架構(gòu)有助于理解我們所實現(xiàn)的抽象。如果我們是自由職業(yè)者或資源有限的初創(chuàng)公司工作主儡,這就變得更加重要奖唯。在這種情況下,擁有軟件架構(gòu)的基本知識就足夠了糜值。
    我們可以采用許多簡單的模式和原則來為我們的應(yīng)用程序創(chuàng)建一個較好的架構(gòu)丰捷,而不需要深入到架構(gòu)世界坯墨。

  9. 架構(gòu)的好處:如前所述,其中一個優(yōu)點是可擴展性病往。如果組件被正確劃分并以有組織的方式進行通信捣染,則添加新功能和修改代碼非常容易快捷。這種分離帶來了許多其他優(yōu)點停巷,例如可測試性耍攘,我們可以輕松地單獨測試組件。

  1. 從哪里開始畔勤?架構(gòu)無處不在蕾各。嵌入式系統(tǒng),web應(yīng)用庆揪,企業(yè)軟件示损,移動APP等等。每種軟件都需要不同的架構(gòu)嚷硫。除非我們想成為軟件架構(gòu)師,否則我們必須選擇我們的開始始鱼。

    理解架構(gòu)和實現(xiàn)的參考書目為:Robert C. Martin的Clean Architecture 和Eric Evans的 Domain-Driven Design: Tackling Complexity in the Heart of Software
    谷歌提供了APP架構(gòu)指南仔掸。一旦掌握了,您可能希望實現(xiàn)Clean Architecture引導(dǎo)的分層架構(gòu)模式医清。這種方法很簡單起暮,適合大多數(shù)應(yīng)用程序。我按照這些原則創(chuàng)建了一個示例應(yīng)用程序会烙。示例的代碼在這里

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末负懦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子柏腻,更是在濱河造成了極大的恐慌纸厉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件五嫂,死亡現(xiàn)場離奇詭異颗品,居然都是意外死亡,警方通過查閱死者的電腦和手機沃缘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門躯枢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人槐臀,你說我怎么就攤上這事锄蹂。” “怎么了水慨?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵得糜,是天一觀的道長敬扛。 經(jīng)常有香客問我,道長掀亩,這世上最難降的妖魔是什么舔哪? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮槽棍,結(jié)果婚禮上捉蚤,老公的妹妹穿的比我還像新娘。我一直安慰自己炼七,他們只是感情好缆巧,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著豌拙,像睡著了一般陕悬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上按傅,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天捉超,我揣著相機與錄音,去河邊找鬼唯绍。 笑死拼岳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的况芒。 我是一名探鬼主播惜纸,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绝骚!你這毒婦竟也來了耐版?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤压汪,失蹤者是張志新(化名)和其女友劉穎粪牲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體止剖,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡虑瀑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滴须。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舌狗。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扔水,靈堂內(nèi)的尸體忽然破棺而出痛侍,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布主届,位于F島的核電站赵哲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏君丁。R本人自食惡果不足惜枫夺,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绘闷。 院中可真熱鬧橡庞,春花似錦、人聲如沸印蔗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽华嘹。三九已至吧趣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耙厚,已是汗流浹背强挫。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留薛躬,地道東北人纠拔。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像泛豪,于是被迫代替她去往敵國和親侦鹏。 傳聞我的和親對象是個殘疾皇子诡曙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容