• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      DDMVVM:領(lǐng)域驅(qū)動的MVVM設(shè)計模型研究

      2018-06-14 05:47:04王躍
      關(guān)鍵詞:用戶界面架構(gòu)邏輯

      王躍

      (四川大學(xué) 計算機學(xué)院,四川成都 610065)

      MVVM模型,是由微軟開發(fā)人員為了降低復(fù)雜用戶界面程序的開發(fā)復(fù)雜性而提出的一種前端設(shè)計模式[1]。作為MVC經(jīng)典模型的擴展、升級,MVVM實現(xiàn)了視圖層(View)與數(shù)據(jù)模型層(Model)的完全解耦,可以使系統(tǒng)開發(fā)者和設(shè)計者完全獨立、并行地工作。因為MVVM的諸多優(yōu)點,目前非常多的主流用戶界面程序開發(fā)平臺都采用該模型。

      但在實際應(yīng)用程序開發(fā)過程中,我們發(fā)現(xiàn),采用傳統(tǒng)MVVM模型進行設(shè)計開發(fā)的程序不能很好地適應(yīng)軟件需求變更,也不能準(zhǔn)確、完整地實現(xiàn)需求復(fù)雜性較高的系統(tǒng)[2]。分析原因可知,MVVM模型的關(guān)注點是業(yè)務(wù)數(shù)據(jù),是數(shù)據(jù)驅(qū)動的開發(fā)模式,并沒有從業(yè)務(wù)領(lǐng)域解決開發(fā)人員與領(lǐng)域?qū)<抑g的溝通問題。

      對此,本文在用戶界面程序MVVM模型中,加入領(lǐng)域驅(qū)動設(shè)計的思想,提出了領(lǐng)域驅(qū)動的MVVM架構(gòu)設(shè)計模型。將軟件分析與設(shè)計的關(guān)注點引導(dǎo)到業(yè)務(wù)上來,使用領(lǐng)域模型作為分析與設(shè)計的通用語言(Ubiquitous Language)。領(lǐng)域驅(qū)動的MVVM模型,以領(lǐng)域模型為核心,指導(dǎo)相關(guān)人員以領(lǐng)域驅(qū)動的思想進行系統(tǒng)分析、設(shè)計、開發(fā)工作,形成了統(tǒng)一的系統(tǒng)語言(Ubiquitous Language),使最終實現(xiàn)的軟件真正滿足需求。

      1 相關(guān)工作

      本章1.1節(jié)和1.2節(jié)分別介紹了MVVM模型和領(lǐng)域驅(qū)動設(shè)計,為下文提出領(lǐng)域驅(qū)動的MVVM架構(gòu)模型奠定了理論基礎(chǔ)。

      1.1 MVVM模型

      MVVM中很重要的一項技術(shù),即“數(shù)據(jù)綁定(Data Binding)”技術(shù)[3]。數(shù)據(jù)綁定技術(shù)實現(xiàn)了View與Model的完全解耦。其中View與ViewModel是一一對應(yīng)的,業(yè)務(wù)邏輯保存在ViewModel中,作為領(lǐng)域數(shù)據(jù)對象的Model是“貧血”模型。MVVM架構(gòu)沒有從整體業(yè)務(wù)領(lǐng)域的交互方面進行充分設(shè)計,當(dāng)涉及多個領(lǐng)域?qū)ο蠼换r,會出現(xiàn)多個ViewModel互相調(diào)用、軟件邏輯混亂的情況。因此,隨著業(yè)務(wù)需求越來越復(fù)雜,業(yè)務(wù)領(lǐng)域內(nèi)部關(guān)聯(lián)性的提高,軟件分析、設(shè)計、開發(fā)的復(fù)雜性都會提高[4]。

      1.2 領(lǐng)域驅(qū)動設(shè)計

      Eric Evans將領(lǐng)域驅(qū)動設(shè)計架構(gòu)分為四層:用戶界面層、應(yīng)用層、領(lǐng)域?qū)雍突A(chǔ)設(shè)施層[1]。

      其中,領(lǐng)域?qū)訛闃I(yè)務(wù)軟件的核心。負責(zé)表達業(yè)務(wù)概念、業(yè)務(wù)狀態(tài)信息及業(yè)務(wù)規(guī)則。領(lǐng)域?qū)影I(lǐng)域模型。領(lǐng)域驅(qū)動設(shè)計中,領(lǐng)域模型是由基本的模型元素構(gòu)成。Eric Evans 提出了6種領(lǐng)域模型元素:實體、值對象、聚合、領(lǐng)域服務(wù)、工廠和倉儲。其中,實體、值對象和聚合為領(lǐng)域?qū)ο?包含了領(lǐng)域業(yè)務(wù)數(shù)據(jù)和流程,即整個領(lǐng)域知識。

      2 領(lǐng)域驅(qū)動的MVVM設(shè)計模型

      在標(biāo)準(zhǔn)MVVM模型基礎(chǔ)上,本文引入了領(lǐng)域驅(qū)動設(shè)計的思想。使得領(lǐng)域驅(qū)動的MVVM設(shè)計模型(DDMVVM)既繼承了MVVM模型優(yōu)點,又遵循領(lǐng)域驅(qū)動設(shè)計思想。

      圖1 MVVM架構(gòu)各層結(jié)構(gòu)

      2.1 DDMVVM整體架構(gòu)模型

      本文提出的DDMVVM模型在需求獲取、系統(tǒng)設(shè)計階段,能夠根據(jù)客戶需求,準(zhǔn)確、完整地獲取領(lǐng)域知識,并正確地抽象出領(lǐng)域模型,實現(xiàn)領(lǐng)域模型中各要素之間正確的依賴、分治。領(lǐng)域?qū)<?、設(shè)計人員、開發(fā)人員以以領(lǐng)域模型作為“通用語言”(Ubiquitous Language)進行溝通,不斷地迭代開發(fā)、優(yōu)化領(lǐng)域模型[5][6]。

      DDMVVM的系統(tǒng)架構(gòu),在遵循領(lǐng)域驅(qū)動設(shè)計分層架構(gòu)基礎(chǔ)上,結(jié)合用戶前端程序開發(fā)的MVVM架構(gòu)層次要求,實現(xiàn)了DDMVVM模型整體架構(gòu)的設(shè)計。

      如圖2所示,將DDD的各模型元素與MVVM三層做映射。分別在View、ViewModel和Model層,實現(xiàn)領(lǐng)域驅(qū)動的模型元素。在領(lǐng)域?qū)蛹赐瓿蓸I(yè)務(wù)領(lǐng)域的邏輯處理能力[3]。

      其中,“Repository倉儲”,即為與后端程序交互層,其主要功能為:1.將領(lǐng)域?qū)訑?shù)據(jù)傳到后端,進行持久化;2.響應(yīng)“領(lǐng)域?qū)印闭埱?從后端程序獲取數(shù)據(jù)作為領(lǐng)域數(shù)據(jù)。

      對照“圖1 MVVM整體架構(gòu)圖”,DDMV VM的改進之處:

      (1)DDMVVM將領(lǐng)域相關(guān)的業(yè)務(wù)邏輯放在了“Model層”,即業(yè)務(wù)邏輯分布在各自領(lǐng)域?qū)ο笾?實現(xiàn)了“充血模型”。

      (2)“ViewModel層”作為協(xié)調(diào)角色存在,負責(zé)協(xié)調(diào)相關(guān)聯(lián)的多個領(lǐng)域?qū)ο筇幚?不保存領(lǐng)域相關(guān)業(yè)務(wù)邏輯代碼,只保存系統(tǒng)流轉(zhuǎn)狀態(tài);MVVM中的“數(shù)據(jù)綁定”和“命令”技術(shù),由“ViewModel層”實現(xiàn)。

      (3)“View層”不需要實現(xiàn)與Model層關(guān)聯(lián)的邏輯,由“ViewModel層”實現(xiàn)View與Model的一對一或多對一關(guān)聯(lián)。

      (4)Model層作為核心,實現(xiàn)了“充血”的Model層。

      (5)工廠和倉儲位于模型層,分別負責(zé)領(lǐng)域?qū)ο髣?chuàng)建和管理工作。

      這樣,避免了標(biāo)準(zhǔn)MVVM模型中出現(xiàn)的因業(yè)務(wù)邏輯交互而出現(xiàn)的邏輯混亂的情況。

      圖2 DDMVVM模型整體架構(gòu)圖

      圖3 DDMVVM Framework框架結(jié)構(gòu)示意圖

      2.2 DDMVVM領(lǐng)域模型設(shè)計

      DDD提供了戰(zhàn)略設(shè)計和戰(zhàn)術(shù)設(shè)計兩種領(lǐng)域模型設(shè)計方式。

      戰(zhàn)略設(shè)計幫助我們從更高的宏觀層面把握整體業(yè)務(wù)領(lǐng)域,正確的劃分邏輯上相互獨立的子領(lǐng)域,并按照“一個子領(lǐng)域?qū)?yīng)一個BC”的標(biāo)準(zhǔn),為每個子領(lǐng)域定義對應(yīng)的一個BC。在子領(lǐng)域內(nèi),使用通用語言明確定義BC邊界內(nèi)各個概念、術(shù)語、定義。

      在限界上下文中,使用戰(zhàn)術(shù)設(shè)計方法,設(shè)計實現(xiàn)領(lǐng)域模型,創(chuàng)建領(lǐng)域模型中的各個構(gòu)成元素,以表示子領(lǐng)域中的所有領(lǐng)域概念。根據(jù)Eric Evans提出的領(lǐng)域模型構(gòu)成元素,DDMVVM模型的設(shè)計,也由6種元素構(gòu)成:實體、值對象、聚合、領(lǐng)域服務(wù)、工廠和倉儲。

      3 模型實現(xiàn)

      DDMVVM模型可以有效指導(dǎo)相關(guān)人員以領(lǐng)域模型為核心,進行系統(tǒng)分析、設(shè)計和開發(fā)工作。本文不僅提出了DDMVVM模型,而且以該模型為指導(dǎo),在移動開發(fā)平臺下實現(xiàn)了一個具體的開發(fā)框架DDMVVM Framework。該框架基于JS語言,將移動開發(fā)平臺中的開發(fā)代碼、功能組件進行重構(gòu),使系統(tǒng)的設(shè)計、開發(fā)過程符合領(lǐng)域驅(qū)動設(shè)計的規(guī)范。

      DDMVVM開發(fā)框架:

      該框架的設(shè)計目標(biāo)是在實際項目開發(fā)中,引導(dǎo)相關(guān)人員以DDMVVM模型為指導(dǎo),規(guī)范地設(shè)計、開發(fā)方式實現(xiàn)系統(tǒng),以提高系統(tǒng)分析、設(shè)計和開發(fā)的效率。

      如圖3所示,該框架編程語言為移動開發(fā)平臺下的JS語言,具體實現(xiàn)了圖2所示DDMVVM架構(gòu)中各層領(lǐng)域模型元素,并實現(xiàn)了面向?qū)ο蟮某绦蛟O(shè)計。

      4 案例分析

      本文以第3章提出的DDMVVM模型為指導(dǎo),對之前在移動開發(fā)平臺下實現(xiàn)的一個政務(wù)系統(tǒng)項目進行了設(shè)計重構(gòu)、代碼重構(gòu)。該項目采用第4章提出的DDMVVM Framework開發(fā)框架進行具體設(shè)計、開發(fā)實現(xiàn)。

      將新舊系統(tǒng)進行對比后發(fā)現(xiàn),采用DDMVVM設(shè)計開發(fā)的新系統(tǒng)要比之前舊系統(tǒng)實現(xiàn)的系統(tǒng)架構(gòu)更優(yōu)秀,新系統(tǒng)在系統(tǒng)完成效率、代碼性能及可維護性等方面都有了顯著提高。

      5 結(jié)語

      本文提出了適用于用戶界面應(yīng)用程序開發(fā)的一種新的設(shè)計模型:領(lǐng)域驅(qū)動的MVVM設(shè)計模型(DDMVVM)。并以該模型為指導(dǎo),在移動開發(fā)平臺下實現(xiàn)了具體的開發(fā)框架DDMVVM Framework。

      [1]EricEvans,埃文斯,趙俐,等.領(lǐng)域驅(qū)動設(shè)計:軟件核心復(fù)雜性應(yīng)對之道[M].人民郵電出版社,2016.

      [2]李引,袁峰.基于領(lǐng)域驅(qū)動設(shè)計的應(yīng)用系統(tǒng)模型[J].計算機工程與應(yīng)用,2013,49(16):1-8.

      [3]黃強,王薇,倪少權(quán).基于SOA和DDD的鐵水聯(lián)運信息平臺構(gòu)架設(shè)計[J].計算機應(yīng)用與軟件,2013,30(6):124-126.

      [4]陳明,李猛坤,張強.一種基于擴展MVVM模式的SaaS面向服務(wù)計算模型[J].微電子學(xué)與計算機,2010,27(8):27-30.

      [5]劉立.MVVM模式分析與應(yīng)用[J].微型電腦應(yīng)用,2012,28(12):57-60.

      [6]Kouraklis J.MVVM as Design Pattern[M]//MVVM in Delphi.Apress,2016.

      猜你喜歡
      用戶界面架構(gòu)邏輯
      自然用戶界面在智能家居系統(tǒng)中的應(yīng)用路徑創(chuàng)新研究:生成式人工智能技術(shù)的調(diào)節(jié)作用
      包裝工程(2023年16期)2023-08-25 11:40:58
      基于FPGA的RNN硬件加速架構(gòu)
      刑事印證證明準(zhǔn)確達成的邏輯反思
      法律方法(2022年2期)2022-10-20 06:44:24
      邏輯
      創(chuàng)新的邏輯
      基于CiteSpace的國外用戶界面體驗圖譜量化分析
      功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實踐
      汽車工程(2021年12期)2021-03-08 02:34:30
      女人買買買的神邏輯
      37°女人(2017年11期)2017-11-14 20:27:40
      UI用戶界面色彩設(shè)計研究
      流行色(2017年12期)2017-10-26 03:08:44
      LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實現(xiàn)
      格尔木市| 淅川县| 新乡市| 南溪县| 通州市| 塔城市| 怀宁县| 南澳县| 云浮市| 深圳市| 临颍县| 玛沁县| 津南区| 都昌县| 永安市| 方山县| 且末县| 兰州市| 竹山县| 广东省| 龙江县| 台湾省| 朝阳县| 且末县| 左贡县| 黄山市| 阳城县| 潼关县| 阳朔县| 海南省| 天等县| 铜陵市| 尤溪县| 奇台县| 女性| 固始县| 抚州市| 泗水县| 岢岚县| 西青区| 郑州市|