架構(gòu)究竟是什么?如何更好的理解架構(gòu)?
我們知道一個App通常是由class組成,而這些class之間如何組合,相互之間又如何產(chǎn)生作用,就是影響這個APP的關(guān)鍵點。
細分的話我們可以將其分為類、接口、任務(wù)流。
- 類就是組成架構(gòu)的核心;
- 接口則是這些類之間通訊的路徑、通訊的機制、通訊的期望結(jié)果;
- 任務(wù)流則是描述系統(tǒng)如何使用類和接口完成某一項需求比如:一次網(wǎng)絡(luò)請求。
我們在進行架構(gòu)設(shè)計的時候,通常具有一定的目的性,用一句話來概括就是:架構(gòu)設(shè)計的真正目的是為了解決軟件系統(tǒng)的復(fù)雜度帶來的問題,所謂高性能、高可用、高擴展。
我們將其大致可以分為:易擴展、易維護、可定制、可伸縮
- 易擴展:APP 必須能夠在用戶的 UV/PV 數(shù)量快速增加的情況下,保持軟件合理的性能。只有這樣在快速從 0 到 1 的需求迭代中才能后顧無憂。
- 易維護:軟件系統(tǒng)的維護包括兩方面,一是修復(fù)現(xiàn)有的 bug,二是將新的迭代需求開發(fā)到現(xiàn)有系統(tǒng)中去。一個易于維護的系統(tǒng)可以有效地降低人力和物力。
- 可定制:在同一個軟件系統(tǒng)中可能面向的用戶群體是不同的、多樣的,需要滿足根據(jù)用戶群的不同和市場需求的不同進行定制化。比如一個 APP 中某些功能只針對特定用戶開放。
- 可伸縮:在新技術(shù)出現(xiàn)的時候,一個軟件系統(tǒng)應(yīng)當允許接入新技術(shù),從而對現(xiàn)有系統(tǒng)進行功能和性能的擴展。
現(xiàn)在我們在進行設(shè)計的時候,一般都會有要求高內(nèi)聚、低耦合,以此來保證APP的高質(zhì)量
為了方便大家理解,這邊舉個栗子:
低內(nèi)聚,高耦合:
高內(nèi)聚,低耦合:
大家覺得誰更好維護?更容易調(diào)整?出錯了更容易排查?
我們在架構(gòu)設(shè)計中最本質(zhì)的目的就是管理復(fù)雜度,你聽過的各種思想、原則、方法大多都是為了控制復(fù)雜度而設(shè)計出來的。
像依賴注入就是項目組件解耦中非常重要的一個手段,Dagger2 和 Hilt 都是在 Android 中最主要的依賴注入框架。
依賴注入其實并不是一個很神秘的概念,往往在不經(jīng)意間我們就使用了依賴注入。依賴注入應(yīng)用了IOC控制反轉(zhuǎn)的原理,簡單來說就是在類的外部構(gòu)造依賴項,使用構(gòu)造器或者 setter 注入。
使用依賴注入可以為我們帶來什么好處呢?
- 重用組件: 因為我們在類外部構(gòu)造依賴項;
- 組件解耦: 當我們需要修改某個組件的實現(xiàn)時,不需要在項目中進行大量變更;
- 易測試: 我們可以向依賴方注入依賴項的模擬實現(xiàn),這使得依賴方的測試更加容易;
- 生命周期透明: 依賴方不感知依賴項創(chuàng)建 / 銷毀的生命周期,這些可以交給依賴注入框架管理。
我們都知道Dagger是一個早期的依賴注入庫,但確實不好用,需要配置很多東西。雖然它能很好幫我們解耦各個模塊之間的強關(guān)聯(lián)性,提高項目的健壯性。但其卻以羞澀難懂、難用而聞名,嚇退了很多的開發(fā)者。
Hilt是 Dagger2 的二次封裝,Hilt 本質(zhì)上是對 Dagger 進行場景化。是一個功能強大且用法簡單的依賴注入框架,同時也可以說是近期 Jetpack 家族中最重要的一名新成員。但Hilt涉及的知識點也是相當繁多,即使它將 Dagger2 的用法進行了大幅的簡化,如果你之前對于依賴注入完全沒有了解,直接上手 Hilt 還是會有不少的困難。
在這里問大家?guī)讉€問題,看看能不能回答上來:
- 你知道面試官為什么要問你IOC嗎?
- 你知道被問的原理包含哪些嗎?
- 你知道這些原理是如何指導(dǎo)我們代碼實踐開發(fā)的嗎?
- 你知道如何從架構(gòu)層面設(shè)計我們的IOC框架解決項目問題?
- 你知道代碼重構(gòu)中的痛點問題是如何處理的嗎?
說了這么多,那么我們?nèi)绾螌W(xué)習(xí)Hilt,將IOC技術(shù)融入進我們的架構(gòu)設(shè)計中呢?
為了幫助大家站在高級工程師的角度,深度理解IOC技術(shù)在移動端的實戰(zhàn)應(yīng)用,同時掌握移動端流行IOC框架Hilt與Dagger2的實戰(zhàn)應(yīng)用與實現(xiàn)原理。
在這里分享一份由大佬親自收錄整理的學(xué)習(xí)PDF+架構(gòu)視頻+面試文檔+源碼筆記,高級架構(gòu)技術(shù)進階腦圖、Android開發(fā)面試專題資料,高級進階架構(gòu)資料
這些都是我現(xiàn)在閑暇時還會反復(fù)翻閱的精品資料。里面對近幾年的大廠面試高頻知識點都有詳細的講解。相信可以有效地幫助大家掌握知識、理解原理,幫助大家在未來取得一份不錯的答卷。
當然,你也可以拿去查漏補缺,提升自身的競爭力。
真心希望可以幫助到大家,Android路漫漫,共勉!






