自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

軟件架構(gòu)設(shè)計:B/S層次架構(gòu)之MVC/MVP/MVVM

開發(fā) 架構(gòu)
MVC中存在的問題就是視圖可以直接操作模型,從而導(dǎo)致跨層級滴哦安永,而MVP的提出,正是解決這個跨層級的問題的。它是MVC的一直變種。

層次架構(gòu)風(fēng)格從之前的兩層C/S到三層C/S,然后演化為三層B/S架構(gòu),三層B/S架構(gòu)之后仍然在往后面演化,我們來看一下層次架構(gòu)演化過程中都有了哪些演化的架構(gòu)風(fēng)格呢?

而我們先簡單了解一下之前的層次架構(gòu)風(fēng)格中分層的各個層次的作用。

  • 表現(xiàn)層:由于用戶進(jìn)行交互,比如MVC,MVP,MVVM其實都是與用戶頁面打交道的一層
  • 中間層:比如我們的接口層或者業(yè)務(wù)邏輯層,一般主要用于處理業(yè)務(wù)邏輯,比如我們的service層
  • 數(shù)據(jù)訪問層:ORM(對象關(guān)系映射),比如說平常的hibernate或mybatis.就是把一個個對象和關(guān)系表的數(shù)據(jù)通過映射關(guān)系綁定起來,讓我們把數(shù)據(jù)庫操作映射到這個對象的操作上來。。
  • 數(shù)據(jù)架構(gòu)層(其實就是數(shù)據(jù)庫)

1、MVC架構(gòu)風(fēng)格

MVC分別是什么?

  • Model(模型):是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。
  • View(視圖):是應(yīng)用程序中 處理數(shù)據(jù)顯示的部分,通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。
  • Controller(控制器):是應(yīng)用程序中處理用戶交互的部分。通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。

在J2EE體系中對應(yīng)關(guān)系為:

  • Model(模型):Entity Bean, Session Bean
  • View(視圖):JSP
  • Controller(控制器):Servlet

在SpringBoot體系中

  • Model(模型):也就是我們的Entity
  • View(視圖):模板頁面,如果是JSON數(shù)據(jù)表示省去了View這個層次,返回JSON數(shù)據(jù)交給前端自己處理數(shù)據(jù)并渲染即可
  • Controller(控制器):Controller,其實本質(zhì)上還是Servlet

主動MVC和被動MVC

細(xì)節(jié)其實不需要我們?nèi)チ私?,但是有主動型和被動型需要我們了解?/span>

動作解讀(了解MVC直接如何交互)

  • 1、客戶做出某種動作,比如點擊某個按鈕,View接收到這個動作
  • 2、然后把這個動作傳遞給Controller層級
  • 3、然后把這個動作繼續(xù)傳遞給Model,Model來處理數(shù)據(jù)的業(yè)務(wù)邏輯。
  • 5、處理完畢之后,把數(shù)據(jù)的更改反饋給View層
  • 6、View層再將這個修改再頁面上渲染,從而反饋給客戶
  • 4、視圖可以直接和模型進(jìn)行交互,直接操作模型獲取數(shù)據(jù)的操作,因此這和操作對于標(biāo)準(zhǔn)層次風(fēng)格來說,這就是跨層次的對接了,所以這個耦合對比較高。

MVC中存在的問題就是視圖可以直接操作模型,從而導(dǎo)致跨層級滴哦安永,而MVP的提出,正是解決這個跨層級的問題的。它是MVC的一直變種。

2、MVP架構(gòu)風(fēng)格

什么是MVP?

  • MVP是MVC的變種
  • MVP實現(xiàn)了View和Model之間的解耦(View不直接使用Model,修改View不會影響Model)
  • MVP更好的支持單元測試, 因為邏輯在P中,可以脫離View來測試邏輯,可以將一個P用于多個V,而不需要修改P的邏輯。
  • MVP中V要處理界面事件,業(yè)務(wù)邏輯在P中,MVC中界面事件交由C處理。

其實現(xiàn)在我們前后端分離之后,如果在不使用數(shù)據(jù)雙向綁定的基礎(chǔ)上,就是典型的MVP架構(gòu)風(fēng)格,如果使用了數(shù)據(jù)雙向綁定,那么就是MVVM架構(gòu)風(fēng)格了。

3、MVVM架構(gòu)風(fēng)格

MVVM跟MVP的操作思想其實沒有一些本質(zhì)性的區(qū)別了,只是多實現(xiàn)了一個雙向數(shù)據(jù)綁定技術(shù)。

4、富互聯(lián)網(wǎng)應(yīng)用(RIA)

  • RIA結(jié)合了C/S架構(gòu)反應(yīng)速度快、交互性強的有點,以及B/S架構(gòu)傳播范圍廣以及容易傳播的特性。
  • RIA簡化并改進(jìn)B/S架構(gòu)的用戶交互
  • 數(shù)據(jù)能夠被緩存在客戶端,從而可以實現(xiàn)一個比基于HTML的響應(yīng)速度更快且數(shù)據(jù)往返與服務(wù)器的次數(shù)更少的用戶界面。

其實簡單來說,就是我們在打開頁面時,將一些常用的數(shù)據(jù)加載到本地,然后減少與服務(wù)器的交互次數(shù),從而提升訪問速度。

主要應(yīng)用于那種頁面動畫較多的,比游戲類的小程序,一般都會這樣做,比如先加載資源,然后初始化配置,再加載某某場景數(shù)據(jù)等。就是為了后面直接訪問本地更快些。

5、小結(jié)

主要說明的層次架構(gòu)中表現(xiàn)層的架構(gòu)演化,后面還有SOA,微服務(wù)等架構(gòu)風(fēng)格,我們慢慢了解,學(xué)無止境,加油!

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2018-10-29 11:41:22

架構(gòu)MVCAndroid

2023-10-20 13:21:55

軟件設(shè)計模式架構(gòu)

2023-04-13 08:23:28

軟件架構(gòu)設(shè)計

2017-04-01 08:30:00

MVCMVPMVVM

2017-03-31 20:45:41

MVCMVPMVVM

2013-09-02 17:46:41

MVC架構(gòu)設(shè)計MVC架構(gòu)設(shè)計

2012-06-07 10:45:12

軟件架構(gòu)設(shè)計原則

2009-02-01 10:17:19

Java架構(gòu)設(shè)計設(shè)計模式

2015-06-02 04:17:44

架構(gòu)設(shè)計審架構(gòu)設(shè)計說明書

2015-01-27 15:25:53

MVVM

2017-05-12 16:50:14

GUI應(yīng)用程序

2018-03-21 16:19:40

MVCMVPMVVM

2024-09-18 09:04:33

架構(gòu)模式查詢

2015-06-02 04:34:05

架構(gòu)設(shè)計

2018-07-10 10:00:15

Android架構(gòu)MVC

2012-05-30 09:43:45

業(yè)務(wù)邏輯層

2014-05-19 10:08:36

IM系統(tǒng)架構(gòu)設(shè)計

2009-06-22 14:48:21

DRY架構(gòu)設(shè)計

2023-04-28 08:23:51

軟件架構(gòu)設(shè)計

2023-03-31 13:31:45

點贊
收藏

51CTO技術(shù)棧公眾號