您好!正如你可能知道的,在Android「Activity」類中可能會變得很龐大,並且包含數千行代碼和數百種方法。也許可以在你用手完成時使用它,但是當你不得不向陌生的代碼添加新的功能時,它變得非常困難和耗時。
這打破了「單一責任」的原則,所以我開始研究一些架構,可以幫助您組織Android中的活動代碼。我已經閱讀了關於MVC,MVVM和其他體系結構模式,但它們對於Android活動結構看起來如此不同。
我的解決方案
我所做的只是一個分解大Activity類成許多獨立的「模塊」。每個模塊遵循「單一責任」原則,並且只包含與其目的相關的方法和領域。同樣,每個模塊都有參考活動,因此它能夠調用活動方法並訪問其他模塊;並且有必要的活動生命週期方法。
在例如,你可以像模塊分裂活動:
- 對話模塊 - 顯示任何對話框,烤麪包,小吃店用戶有關錯誤等
- 事件處理模塊 - 拉手網和從外部
- 驗證模塊來的其他事件 - 註銷(並轉到登錄活動),檢查證件,防止活動無需身份驗證即可數據工作
- 列表模塊 - 一種帶有活性的RecyclerView工作,並在其上 處理點擊
- ...
後的模塊Activity類文件拆分只包含:生命週期方法,對所有模塊和模塊的生命週期方法的調用引用。因此,您將擁有5-10-20個具有100-200行代碼和3-5個字段的良好命名的類文件。您可以通過編寫新模塊來添加新功能,將其作爲字段添加到活動中並調用它的生命週期方法。
問題
它很自然地認爲Android中的我,但我需要知道,如果他們在其他的代碼面對它會說什麼其他的開發商。我已經發現了一個缺點 - 當你擴展這個「模塊活動」時,覆蓋功能並不重要,因爲它放在模塊中,你必須擴展和替換模塊而不是方法。
你能幫我找到關於這個建築的其他壞的或好的東西嗎?也許可以回答,爲什麼一些開發人員繼續編寫5000行代碼的活動:)
不應該在Code Review上詢問這個問題嗎? – Sweeper
@Sweeper哦,謝謝,我不知道這部分堆棧交換:) –