成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘技術趣談 | Android常用開發架構介紹

移動開發
架構是指我們程序的邏輯組織結構,是幫助我們在開發過程中按功能按需求劃分模塊的關鍵,好的架構可以使得我們的開發效率大大提高,也能提升代碼的可讀性及可擴展性。

Part 01

架構的概念 

在移動端開發中,一般將代碼分為三個部分:UI邏輯,業務邏輯和數據操作邏輯。

Android的架構就是希望達到這樣的目的:

1.降低代碼之間的耦合率,使團隊可以清晰的劃分各自的任務,提高開發效率;

2.使代碼邏輯清晰,提高代碼的可讀性與可維護性;

3.減少重復代碼,提高開發的效率,避免重復造輪子。

為了達到以上的目的,涌現出了許多的架構。谷歌官方也推出了自己的架構組件,用成熟的框架來減少樣板代碼,提高開發效率,猶如SpringMVC的風范,這就是MVVM的框架實現。下面我們來簡單認識一下這幾種架構。

Part 02

MVC 

圖片

MVC架構應該是每個Android第一次進行開發時所使用的架構。View層負責頁面的顯示,與用戶的交互,獲取用戶的操作。Controller負責接收用戶的操作并處理業務邏輯。Model層則負責數據處理,網絡請求及可能涉及到的本地數據庫操作等。MVC的本質就是按照UI邏輯、業務邏輯、數據邏輯不同的職責分三大模塊,彼此分工。

在Android開發中,View一般由xml文件表現。但是由于xml的能力不足,我們對于ui處理的邏輯被放在了activity中。同時關于controller的業務邏輯代碼,一部分也放在了activity中,與model層的交互便在此中進行。

由此帶來了MVC架構的問題與弊端,在activity中會同時包含我們的ui和業務邏輯代碼。隨著項目的變大和頁面的復雜,在activity中的代碼會變得越來越多,越來越復雜,難以維護。同時view直接持有controller和model實例,不同職責的代碼進行耦合,導致代碼耦合性高,模塊分工不清晰。各功能模塊之間互相粘連,當想更新或者處理一些bug的時候會非常困難。

同時MVC架構的好處便是我們不需要寫大量的隔離代碼用來解藕。當我們面對一些簡單的頁面和需求快速響應的需求時,它可以幫助我們快速完成。

從中我們也能看到MVC下一步需要進化改進的方向:

1.加強view與model之間的解藕,使它們減少互相持有。

2.減輕controller的冗雜程度,減重以提高可維護性和可讀性。

由此我們來介紹下一種架構。

Part 03

MVP 

圖片

MVP全名是Model-View-Presenter。與mvc模式相比,它具有更好的可擴展性和可維護性,代碼間的耦合程度更低。View層負責頁面的顯示,與用戶的交互,獲取用戶的操作。Model層則負責數據處理,網絡請求及可能涉及到的本地數據庫操作等。它們的職責都沒有變化,不同的地方在于Presenter:它負責業務邏輯,起著連接View和Model橋梁的作用。

為了解決mvc中代碼耦合程度高的問題,我們將業務邏輯都抽離出來放入Presenter中,這樣我們的Model和View實現了完全的隔離,實現了單向依賴。在View和Psenter之間使用接口來通信,這樣我們可以按照功能或者需求來劃分各自的模塊,同時進行開發。同樣在我們有需要時,我們也可以更換單獨某個模塊而不影響同一頁面中其他模塊的運行,這是mvc所不具有的。

看上去mvp已經實現了我們的需求,但它也有自己的問題。因為在我們的實際開發過程中,每個頁面或多或少都會有所差異即沒有兩個完全相同的頁面,這也就導致了我們每個activity都需要一個自己的Presenter及配套的接口,這使得我們需要寫大量的代碼對其進行解藕,當面對小型的項目時這反而影響了我們的開發效率,同時controller臃腫的問題依然存在,解藕的程度還是不夠深。由此我們來介紹下一種架構。

Part 04

MVVM 

圖片

MVVM,全名為Model-View-ViewModel。View層負責頁面的顯示,與用戶的交互,獲取用戶的操作。Model層則負責數據處理,網絡請求及可能涉及到的本地數據庫操作等。它們的職責依然沒有變化。ViewModel:負責存儲view的數據映像以及業務邏輯。

MVVM模式中的重點就是viewmodel,它通過綁定的方式將view與model一一對應,將數據的變化直接顯示在我們的view上,徹底拋棄掉了MVP的Presenter中的ui邏輯操作。我們也不再需要單獨編寫接口進行通信。之前的業務邏輯也放在了viewmodel之中。這樣的方式使得我們的視圖與業務完全解藕,view專注于ui操作,viewmodel專注于業務操作,這就是數據驅動的思想。

要想實現這樣的效果我們還需要一個簡單容易上手的框架來幫助我們進行view與viewmodel之間的綁定和減輕viewmodel中業務邏輯操作過于復雜的部分。由此谷歌官方推出了mvvm框架和與之一起使用的jetpack架構組件庫,包括了:DataBinding,LiveData,ViewModel,Navigation,Lifecycle。

MVVM與MVC、MVP最大的差異便是MVVM是由數據驅動,專注于頁面開發的架構模式,更像谷歌官方推出的專注于移動端開發的架構。不同于其余兩種,MVVM的開發需要頁面的存在,這也導致了它的使用被限制在了頁面開發當中,我們無法在插板洗衣機上進行開發。因為沒有數據對象與頁面可言。

Part 05

總結 

通過以上介紹我們可以發現,沒有完美無缺的框架,只有場景中最合適的框架。每一個框架的誕生都是伴隨著我們對某個特殊場景或者某些場景下的特殊問題的需求。例如Android中的問題便是ui與業務邏輯的解藕。但當我們面對一些小型項目,快速需求或者沒有頁面顯示的需要時,MVVM顯然也不是我們的最優解。我們需要學習的是對需求的拆分與理解,選擇最合適我們項目的框架。

責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2023-07-23 18:47:59

Docker開源

2023-07-16 18:49:42

HTTP網絡

2023-04-15 20:33:35

圖形數據庫數據庫

2023-06-03 21:06:05

2023-04-15 20:25:23

微前端

2023-09-18 07:10:48

限流算法

2023-09-17 17:51:43

Android 14

2023-07-02 16:34:06

GPU虛擬化深度學習

2023-07-02 16:09:57

人工智能人臉識別

2023-09-12 07:10:13

Nacos架構

2023-08-06 07:05:25

Android優化

2023-08-29 06:55:43

2023-07-31 08:55:15

AI技術網絡暴力

2024-12-18 14:10:33

2023-07-12 15:50:29

機器學習人工智能

2023-08-29 06:50:01

Javamaven

2023-09-03 19:13:29

AndroidKotlin

2023-08-15 14:46:03

2023-08-06 07:00:59

Openstack網絡

2023-08-06 06:55:29

數字可視化物聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费一区 | 欧美一区二区三区精品 | 一区二区av | 久久黄色精品视频 | 久久久精品一区 | 国产精品免费播放 | 蜜桃一区二区三区 | 一区二区在线不卡 | 99精品视频在线观看免费播放 | 日日操操 | 在线免费观看黄网 | 91佛爷在线观看 | 蜜臀av日日欢夜夜爽一区 | 日韩a| 久久精品无码一区二区三区 | 久久久精品一区 | 日韩欧美在线视频播放 | 欧美一二三区 | 日韩精品一区二区三区视频播放 | 粉嫩高清一区二区三区 | 国产精品成人一区二区三区 | 成人久久一区 | 99爱在线观看 | 日韩精品成人 | 欧美一区二区三区在线视频 | 亚洲视频在线看 | 中文字幕人成乱码在线观看 | 国产精品片 | 中文字幕视频一区二区 | 一级免费a | 国产婷婷精品av在线 | 欧美乱做爰xxxⅹ久久久 | 一区精品视频在线观看 | 精品久久一区 | 久久精品久久久久久 | 色橹橹欧美在线观看视频高清 | 福利国产 | 国产精品视频一区二区三区不卡 | 成人免费共享视频 | aaa在线观看 | 欧美激情免费在线 |