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

架構師之路之業(yè)務領域建模

開發(fā) 架構
領域模型是對領域內的概念類或現(xiàn)實世界中對象的可視化表示。又稱概念模型、領域對象模型、分析對象模型。它專注于分析問題領域本身,發(fā)掘重要的業(yè)務領域概念,并建立業(yè)務領域概念之間的關系。

 [[396130]]

本文轉載自微信公眾號「JAVA日知錄」,作者單一色調。轉載本文請聯(lián)系JAVA日知錄公眾號。

領域模型的概念及作用

領域模型是對領域內的概念類或現(xiàn)實世界中對象的可視化表示。又稱概念模型、領域對象模型、分析對象模型。它專注于分析問題領域本身,發(fā)掘重要的業(yè)務領域概念,并建立業(yè)務領域概念之間的關系。概念比較深奧,其實說白了就是我們把基于對業(yè)務的理解畫成一個類圖,并畫出這些類之間的關系(面向對象)。

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

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

恰恰相反,我們在建模的時候不要將注意力集中在屬性或行為上,應該擺脫這些細枝末節(jié),抓住領域對象定義的最基本特征,只需要體現(xiàn)對象模型的重要概念。如果細節(jié)過多很容易產生 ”只見樹木,不見森林“ 的現(xiàn)象。

下面我們看一個簡化后的報銷業(yè)務的領域模型,加深一下印象。

完成一個領域模型建模,主要需要做兩件事:

  1. 定義類的關鍵屬性和關鍵行為;
  2. 定義類與類之間的關聯(lián)關系。

定義類的屬性和行為

定義類的屬性和行為比較簡單,用設計工具拖一個class即可,這里只需要注意一下屬性和行為的訪問權限。

  1. - 表示private   
  2. # 表示protected  
  3. ~ 表示default,也就是包權限   
  4. + 表示public 

定義類與類之間的交互關系

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

泛化(Generalization)

介紹:

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

圖例:

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

代碼實現(xiàn):

  1. public class A { 
  2.    
  3.  
  4. public class B extends A { 
  5.    

實現(xiàn)(Realization)

介紹:

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

圖例:

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

代碼實現(xiàn):

  1. public interface A { 
  2.    
  3.  
  4. public class B implements A { 
  5.    

聚合(Aggregation)

介紹:

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

圖例:

使用 空心的菱形+實線箭頭 表示。

代碼實現(xiàn):

  1. public class A { 
  2.     private B b; 
  3.     public A(B b){ 
  4.         this.b = b; 
  5.     } 

組合(Composition)

介紹:

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

圖例:

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

代碼實現(xiàn):

  1. public class A { 
  2.     private B b; 
  3.     public A () { 
  4.         this.b = new B(); 
  5.     } 

關聯(lián)(Association)

介紹:

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

圖例:

使用實線箭頭表示。

代碼實現(xiàn):

  1. public class A { 
  2.     private B b; 
  3.     public A(B b){ 
  4.         this.b = b; 
  5.     } 

或者

  1. public class A { 
  2.     private B b; 
  3.     public A () { 
  4.         this.b = new B(); 
  5.     } 

依賴(Dependency)

介紹:

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

圖例:

使用 虛線箭頭 表示。

代碼實現(xiàn):

  1. public class A { 
  2.     private B b; 
  3.     public A(B b){ 
  4.         this.b = b; 
  5.     } 

或者

  1. public class A { 
  2.     private B b; 
  3.     public A () { 
  4.         this.b = new B(); 
  5.     } 

或者

  1. public class A { 
  2.  public void func(B b) 
  3.         ... 
  4.     } 

模型簡化

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

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

小結

領域模型最終呈現(xiàn)后的結果很簡單,但是過程卻很復雜。需要架構師基于自身的業(yè)務知識和類似產品的參考,再結合客戶、業(yè)務專家、領域專家的咨詢和指導,需要經過不斷推倒、修改優(yōu)化才能完成。

對于剛開始接觸領域模型的繪制時經常會出現(xiàn)下面兩種典型錯誤:

將待開發(fā)系統(tǒng)也放在領域模型里面 待開發(fā)系統(tǒng)要不要出現(xiàn)在領域模型中取決于你的業(yè)務離開待開發(fā)的系統(tǒng)能不能玩的轉。舉個例子:如果開發(fā)的是共享單車的信息系統(tǒng),共享單車離開信息系統(tǒng)肯定玩不轉,所以這時候信息系統(tǒng)需要出現(xiàn)在領域模型。

概念劃分不清,關系沒有畫到位 比如屬性畫成了類,繼承關系搞錯

 

責任編輯:武曉燕 來源: JAVA日知錄
相關推薦

2022-04-19 08:15:53

DDD領域建模實戰(zhàn)

2024-07-08 08:45:41

2011-10-24 09:26:42

系統(tǒng)架構師

2011-10-20 09:06:36

系統(tǒng)架構師

2012-04-05 10:25:02

WEB架構師

2011-10-27 09:08:59

系統(tǒng)架構師

2019-07-23 18:15:26

技術大數(shù)據(jù)數(shù)據(jù)庫

2021-10-25 09:41:04

架構運維技術

2011-10-21 09:04:57

系統(tǒng)架構師

2011-10-19 09:20:44

2021-07-12 23:43:46

AppAndroid優(yōu)化

2018-07-03 15:46:24

Java架構師源碼

2023-07-26 08:00:00

DDD架構微服務

2022-03-11 10:53:32

UML建模語言

2012-03-31 10:00:05

WEB架構師

2009-02-23 11:18:06

J2EE架構師Java

2013-04-19 15:12:17

架構師WEB架構師

2012-04-09 09:41:24

WEB架構師

2020-11-25 09:56:48

架構運維技術

2018-02-06 09:58:48

架構師MVCiOS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品一区二区视频 | 毛片免费看的 | 国产美女精品视频 | 国产精品久久久久久久久免费樱桃 | h在线播放 | 四虎影院在线播放 | 欧美激情精品久久久久久 | 在线播放国产一区二区三区 | 涩涩视频在线观看 | 看av电影 | 亚洲午夜精品一区二区三区他趣 | 青青草一区二区三区 | 日本黄色免费大片 | 国产欧美日韩一区二区三区在线观看 | 日本一二三区电影 | 精品自拍视频在线观看 | 国产婷婷色一区二区三区 | 三级视频在线观看电影 | 国产精品夜色一区二区三区 | 欧美高清成人 | 日本一区二区三区免费观看 | 久久久国产一区 | 精品欧美一区二区三区久久久小说 | 亚洲国产成人精品女人 | 国产一级视频在线 | 日本精a在线观看 | 亚洲一二三区精品 | 国产精品.xx视频.xxtv | 天天看夜夜 | 在线视频99| 日本三级电影免费观看 | 国产 日韩 欧美 中文 在线播放 | 久久成人一区 | 欧美日韩亚洲一区 | 毛片a级 | 精品在线看 | 成人永久免费视频 | 最新免费av网站 | 在线一区二区三区 | 国产大毛片 | 中文字幕亚洲精品在线观看 |