[TOC]
# 介紹MVC、MVP、MVVM
1、Model模型對象中存儲著數(shù)據(jù)和業(yè)務(wù)邏輯,應(yīng)用的全部模型對象組成了模型層;
2、View視圖對象知道如何在屏幕上繪制自己及如何響應(yīng)用戶的輸入、觸摸,凡是屏幕上能看到的對象就是視圖對象,全部視圖對象組成了視圖層;
3、Controller控制對象含有應(yīng)用的邏輯單元,是視圖和模型對象聯(lián)系的紐帶,響應(yīng)視圖對象觸發(fā)的各類事件,同時管理著模型對象和視圖間的數(shù)據(jù)流動。
4、MVC模式的工作流程為:視圖對象觸發(fā)各類事件交由控制對象分發(fā),控制對象選取合適的模型對象處理事件,模型對象處理完事件后再由控制對象通知視圖對象進行更新視圖。
5、Android開發(fā)原始寫法中,Activity中包含了Controller對象、Model對象及部分View對象的代碼,并且View與Model直接也存在聯(lián)系,異常臃腫。
6、原始寫法->MVC模式:將Activity中的業(yè)務(wù)邏輯代碼也就是Model層進行抽離,稱為Model層。這樣Activity僅負責(zé)Controller層和部分View層,業(yè)務(wù)與視圖進行了分離。
7、MVC模式->MVP模式:將Activity中的程序邏輯控制代碼也就是Controller層進行抽離,稱為Presenter層,這樣Activity僅負責(zé)View層,Presenter調(diào)用View層接口更新UI,不直接持有View,解耦更徹底。
8、MVC模式->MVVM模式:將View層和Presenter層之間的交互做成自動化的,將Presenter層改名為ViewModel層。
- 導(dǎo)讀
- Java知識
- Java基本程序設(shè)計結(jié)構(gòu)
- 【基礎(chǔ)知識】Java基礎(chǔ)
- 【源碼分析】Okio
- 【源碼分析】深入理解i++和++i
- 【專題分析】JVM與GC
- 【面試清單】Java基本程序設(shè)計結(jié)構(gòu)
- 對象與類
- 【基礎(chǔ)知識】對象與類
- 【專題分析】Java類加載過程
- 【面試清單】對象與類
- 泛型
- 【基礎(chǔ)知識】泛型
- 【面試清單】泛型
- 集合
- 【基礎(chǔ)知識】集合
- 【源碼分析】SparseArray
- 【面試清單】集合
- 多線程
- 【基礎(chǔ)知識】多線程
- 【源碼分析】ThreadPoolExecutor源碼分析
- 【專題分析】volatile關(guān)鍵字
- 【面試清單】多線程
- Java新特性
- 【專題分析】Lambda表達式
- 【專題分析】注解
- 【面試清單】Java新特性
- Effective Java筆記
- Android知識
- Activity
- 【基礎(chǔ)知識】Activity
- 【專題分析】運行時權(quán)限
- 【專題分析】使用Intent打開三方應(yīng)用
- 【源碼分析】Activity的工作過程
- 【面試清單】Activity
- 架構(gòu)組件
- 【專題分析】MVC、MVP與MVVM
- 【專題分析】數(shù)據(jù)綁定
- 【面試清單】架構(gòu)組件
- 界面
- 【專題分析】自定義View
- 【專題分析】ImageView的ScaleType屬性
- 【專題分析】ConstraintLayout 使用
- 【專題分析】搞懂點九圖
- 【專題分析】Adapter
- 【源碼分析】LayoutInflater
- 【源碼分析】ViewStub
- 【源碼分析】View三大流程
- 【源碼分析】觸摸事件分發(fā)機制
- 【源碼分析】按鍵事件分發(fā)機制
- 【源碼分析】Android窗口機制
- 【面試清單】界面
- 動畫和過渡
- 【基礎(chǔ)知識】動畫和過渡
- 【面試清單】動畫和過渡
- 圖片和圖形
- 【專題分析】圖片加載
- 【面試清單】圖片和圖形
- 后臺任務(wù)
- 應(yīng)用數(shù)據(jù)和文件
- 基于網(wǎng)絡(luò)的內(nèi)容
- 多線程與多進程
- 【基礎(chǔ)知識】多線程與多進程
- 【源碼分析】Handler
- 【源碼分析】AsyncTask
- 【專題分析】Service
- 【源碼分析】Parcelable
- 【專題分析】Binder
- 【源碼分析】Messenger
- 【面試清單】多線程與多進程
- 應(yīng)用優(yōu)化
- 【專題分析】布局優(yōu)化
- 【專題分析】繪制優(yōu)化
- 【專題分析】內(nèi)存優(yōu)化
- 【專題分析】啟動優(yōu)化
- 【專題分析】電池優(yōu)化
- 【專題分析】包大小優(yōu)化
- 【面試清單】應(yīng)用優(yōu)化
- Android新特性
- 【專題分析】狀態(tài)欄、ActionBar和導(dǎo)航欄
- 【專題分析】應(yīng)用圖標、通知欄適配
- 【專題分析】Android新版本重要變更
- 【專題分析】唯一標識符的最佳做法
- 開源庫源碼分析
- 【源碼分析】BaseRecyclerViewAdapterHelper
- 【源碼分析】ButterKnife
- 【源碼分析】Dagger2
- 【源碼分析】EventBus3(一)
- 【源碼分析】EventBus3(二)
- 【源碼分析】Glide
- 【源碼分析】OkHttp
- 【源碼分析】Retrofit
- 其他知識
- Flutter
- 原生開發(fā)與跨平臺開發(fā)
- 整體歸納
- 狀態(tài)及狀態(tài)管理
- 零碎知識點
- 添加Flutter到現(xiàn)有應(yīng)用
- Git知識
- Git命令
- .gitignore文件
- 設(shè)計模式
- 創(chuàng)建型模式
- 結(jié)構(gòu)型模式
- 行為型模式
- RxJava
- 基礎(chǔ)
- Linux知識
- 環(huán)境變量
- Linux命令
- ADB命令
- 算法
- 常見數(shù)據(jù)結(jié)構(gòu)及實現(xiàn)
- 數(shù)組
- 排序算法
- 鏈表
- 二叉樹
- 棧和隊列
- 算法時間復(fù)雜度
- 常見算法思想
- 其他技術(shù)
- 正則表達式
- 編碼格式
- HTTP與HTTPS
- 【面試清單】其他知識
- 開發(fā)歸納
- Android零碎問題
- 其他零碎問題
- 開發(fā)思路
