溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

領(lǐng)域模型的概念及作用是什么

發(fā)布時(shí)間:2021-10-12 14:35:16 來(lái)源:億速云 閱讀:359 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“領(lǐng)域模型的概念及作用是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

 領(lǐng)域模型的概念及作用是什么

領(lǐng)域模型的概念及作用

領(lǐng)域模型是對(duì)領(lǐng)域內(nèi)的概念類或現(xiàn)實(shí)世界中對(duì)象的可視化表示。又稱概念模型、領(lǐng)域?qū)ο竽P?、分析?duì)象模型。它專注于分析問(wèn)題領(lǐng)域本身,發(fā)掘重要的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系。概念比較深?yuàn)W,其實(shí)說(shuō)白了就是我們把基于對(duì)業(yè)務(wù)的理解畫成一個(gè)類圖,并畫出這些類之間的關(guān)系(面向?qū)ο?。

領(lǐng)域模型可以整理業(yè)務(wù)中的概念以及關(guān)系,幫助團(tuán)隊(duì)中的成員對(duì)業(yè)務(wù)的理解保持一致,往后可以指導(dǎo)數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)功能設(shè)計(jì)、指導(dǎo)開發(fā)。在整個(gè)系統(tǒng)建設(shè)周期能起到  上接需求,下承開發(fā) 的作用。

那既然領(lǐng)域模型如此重要,我們是不是要在類圖中盡可能的展示對(duì)象的屬性和方法,以便更好的指導(dǎo)后續(xù)的開發(fā)設(shè)計(jì)。

恰恰相反,我們?cè)诮5臅r(shí)候不要將注意力集中在屬性或行為上,應(yīng)該擺脫這些細(xì)枝末節(jié),抓住領(lǐng)域?qū)ο蠖x的最基本特征,只需要體現(xiàn)對(duì)象模型的重要概念。如果細(xì)節(jié)過(guò)多很容易產(chǎn)生  ”只見樹木,不見森林“ 的現(xiàn)象。

下面我們看一個(gè)簡(jiǎn)化后的報(bào)銷業(yè)務(wù)的領(lǐng)域模型,加深一下印象。

領(lǐng)域模型的概念及作用是什么

完成一個(gè)領(lǐng)域模型建模,主要需要做兩件事:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 定義類的關(guān)鍵屬性和關(guān)鍵行為;

  3. 定義類與類之間的關(guān)聯(lián)關(guān)系。

定義類的屬性和行為

定義類的屬性和行為比較簡(jiǎn)單,用設(shè)計(jì)工具拖一個(gè)class即可,這里只需要注意一下屬性和行為的訪問(wèn)權(quán)限。

- 表示private   # 表示protected  ~ 表示default,也就是包權(quán)限   + 表示public

領(lǐng)域模型的概念及作用是什么

定義類與類之間的交互關(guān)系

在UML類圖中,定義了六種類之間的關(guān)系,他們分別是:泛化(Generalization),  實(shí)現(xiàn)(Realization),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)。關(guān)系比較多,而且有些還比較相近,比如聚合和組合,接下來(lái)我們逐漸講解:

泛化(Generalization)

介紹:

泛化(Generalization)表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系。

圖例:

使用 空心三角形+實(shí)線 表示。

領(lǐng)域模型的概念及作用是什么

代碼實(shí)現(xiàn):

public class A {    }  public class B extends A {    }

實(shí)現(xiàn)(Realization)

介紹:

實(shí)現(xiàn)(Realization)表示一個(gè)class類實(shí)現(xiàn)interface接口(可以是多個(gè))的功能。

圖例:

使用 空心三角形+虛線 表示。

領(lǐng)域模型的概念及作用是什么

代碼實(shí)現(xiàn):

public interface A {    }  public class B implements A {    }

聚合(Aggregation)

介紹:

聚合(Aggregation)表示一種弱的 ‘擁有’ 關(guān)系,即has-a的關(guān)系,體現(xiàn)的是A對(duì)象可以包含B對(duì)象,B類生命周期可以不依賴A類對(duì)象的生命周期,  也就是說(shuō)可以單獨(dú)銷毀A類對(duì)象而不影響B(tài)類對(duì)象,比如課程與學(xué)生之間的關(guān)系。

圖例:

使用 空心的菱形+實(shí)線箭頭 表示。

領(lǐng)域模型的概念及作用是什么

代碼實(shí)現(xiàn):

public class A {     private B b;     public A(B b){         this.b = b;     } }

組合(Composition)

介紹:

組合(Composition)表示一種強(qiáng)的 ‘擁有’  關(guān)系,即contains-a的關(guān)系,體現(xiàn)的是A對(duì)象包含B對(duì)象,B類生命周期依賴A類對(duì)象的生命周期,B類對(duì)象不可單獨(dú)存在,比如鳥與翅膀之間的關(guān)系。

圖例:

使用 實(shí)心的菱形+實(shí)線箭頭 表示,還可以使用連線兩端的數(shù)字表示某一端有幾個(gè)實(shí)例。

領(lǐng)域模型的概念及作用是什么

代碼實(shí)現(xiàn):

public class A {     private B b;     public A () {         this.b = new B();     } }

關(guān)聯(lián)(Association)

介紹:

關(guān)聯(lián)(Association)是一種非常弱的關(guān)系,包含聚合、組合兩種關(guān)系。對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象負(fù)責(zé)構(gòu)造另一個(gè)對(duì)象的實(shí)例,或者依賴另一個(gè)對(duì)象的服務(wù)時(shí),這兩個(gè)對(duì)象之間主要體現(xiàn)為依賴關(guān)系。具體到代碼層面,如果B類是A類的成員變量,那么B類和A類就是關(guān)聯(lián)關(guān)系。

圖例:

使用實(shí)線箭頭表示。

領(lǐng)域模型的概念及作用是什么

代碼實(shí)現(xiàn):

public class A {     private B b;     public A(B b){         this.b = b;     } }

或者

public class A {     private B b;     public A () {         this.b = new B();     } }

依賴(Dependency)

介紹:

依賴(Dependency)  是比關(guān)聯(lián)關(guān)系更加弱的關(guān)系,包含關(guān)聯(lián)關(guān)系。不管是B類對(duì)象是A類對(duì)象的成員變量,還是A類方法使用B類對(duì)象作為參數(shù)或者返回值、局部變量,只要B類對(duì)象和A類對(duì)象有任何使用關(guān)系,我們都稱他們有依賴關(guān)系。

圖例:

使用 虛線箭頭 表示。

領(lǐng)域模型的概念及作用是什么

代碼實(shí)現(xiàn):

public class A {     private B b;     public A(B b){         this.b = b;     } }

或者

public class A {     private B b;     public A () {         this.b = new B();     } }

或者

public class A {  public void func(B b)         ...     } }

模型簡(jiǎn)化

嚴(yán)格的UML類圖之間的關(guān)系拆分的太細(xì),專業(yè)要求很高,大大增加了學(xué)習(xí)成本,而且對(duì)于業(yè)務(wù)溝通,指導(dǎo)后續(xù)數(shù)據(jù)庫(kù)設(shè)計(jì),編程開發(fā)沒有太大意義。

所以在實(shí)際業(yè)務(wù)建模過(guò)程中,我們并不需要嚴(yán)格按照UML類圖交互關(guān)系來(lái)描述業(yè)務(wù)實(shí)體之間的關(guān)系,比如我們可以將聚合、組合、關(guān)聯(lián)統(tǒng)統(tǒng)使用關(guān)聯(lián)關(guān)系表示,使用實(shí)線連接兩個(gè)實(shí)體,并在兩側(cè)標(biāo)記出實(shí)例個(gè)數(shù)即可。

領(lǐng)域模型的概念及作用是什么

“領(lǐng)域模型的概念及作用是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI