成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

第九天-《企業(yè)應(yīng)用架構(gòu)模式》-領(lǐng)域邏輯模式

pinecone / 2767人閱讀

摘要:領(lǐng)域模型應(yīng)當(dāng)使用細(xì)粒度的對象,這些對象應(yīng)有細(xì)粒度的接口。它封裝了應(yīng)用的業(yè)務(wù)邏輯事務(wù)控制及其操作實(shí)現(xiàn)中的響應(yīng)協(xié)調(diào)。

1. 事務(wù)腳本 1)調(diào)用數(shù)據(jù)庫:

事務(wù)腳本將所有邏輯組成單個(gè)過程,在過程中直接調(diào)用數(shù)據(jù)庫,或者只通過一個(gè)簡單的數(shù)據(jù)庫封存器。

2)腳本處理:

每個(gè)事務(wù)都有自己的事務(wù)腳本,盡管事務(wù)間的公共子任務(wù)可以被分解成多個(gè)子程序。

3)運(yùn)行機(jī)制:

a.事務(wù)腳本應(yīng)該置于與其他處理表現(xiàn)層和數(shù)據(jù)源層的類相獨(dú)立的類中,把事務(wù)腳本組織成類的兩種方法:

a. 將數(shù)個(gè)事務(wù)腳本放在一個(gè)類中,每個(gè)類圍繞一個(gè)主題將相關(guān)的事務(wù)腳本組織在一起;

b. 使用Command模式,每一個(gè)事務(wù)腳本對應(yīng)一個(gè)類 (command)

4)使用時(shí)機(jī):

業(yè)務(wù)邏輯簡單場景(同時(shí)注意謹(jǐn)慎提取公共子程序以減少代碼冗余),當(dāng)業(yè)務(wù)復(fù)雜時(shí)則需要建立領(lǐng)域模型

5)優(yōu)點(diǎn):

當(dāng)問題本身是簡單的時(shí),使用事務(wù)腳本可以加快開發(fā)速度,而且運(yùn)行更快

6)示例:

假如有如下需求:

數(shù)據(jù)庫設(shè)計(jì)為:

其中,RevenueRecognition表引用Contract表的Id作為外鍵。根據(jù)需求和數(shù)據(jù)庫設(shè)計(jì),事務(wù)腳本類圖設(shè)計(jì)為:

這里,Gateway為數(shù)據(jù)庫訪問封存器,RecognitionServices為事務(wù)腳本類。CalculateRevenueRecognitions方法用于計(jì)算并保存需入賬信息(合同編號(hào)、時(shí)間、收費(fèi)金額),RecognizedRevenue用于按照合同編號(hào)、指定日期查詢已收費(fèi)用。應(yīng)用程序只需要分別單個(gè)調(diào)取這2個(gè)方法即可。

2. 領(lǐng)域模型 1)運(yùn)行機(jī)制

領(lǐng)域模型與數(shù)據(jù)庫模型的區(qū)別:領(lǐng)域模型混合數(shù)據(jù)和處理過程,擁有多值屬性和復(fù)雜的關(guān)聯(lián)網(wǎng),并且使用繼承、策略、設(shè)計(jì)模式,是一張由互聯(lián)的細(xì)粒度對象組成的復(fù)雜網(wǎng)絡(luò);

使用領(lǐng)域邏輯的一個(gè)常見問題: 領(lǐng)域?qū)ο筮^于臃腫,可能會(huì)產(chǎn)生冗余代碼

數(shù)據(jù)庫映射:簡單領(lǐng)域模型可以使用活動(dòng)記錄,而復(fù)雜領(lǐng)域模型需要使用數(shù)據(jù)映射器。

領(lǐng)域模型應(yīng)當(dāng)使用細(xì)粒度的對象,這些對象應(yīng)有細(xì)粒度的接口。

2)使用時(shí)機(jī)

當(dāng)業(yè)務(wù)規(guī)則復(fù)雜多變,涉及到校驗(yàn)、計(jì)算、衍生時(shí)。

數(shù)據(jù)庫交互方式:首選數(shù)據(jù)映射器

3)示例:

對于上文中需求,設(shè)計(jì)類圖如下:
    

可以看到,這里收費(fèi)方式使用了策略模式。

3. 表模塊

表模塊以一個(gè)類對應(yīng)數(shù)據(jù)庫中的一個(gè)表來組織領(lǐng)域邏輯,而且使用單一的類實(shí)例來包含將對數(shù)據(jù)進(jìn)行的各種操作程序。

表模塊與領(lǐng)域邏輯的區(qū)別:如果有多個(gè)訂單,領(lǐng)域模型對每個(gè)訂單都有一個(gè)對象,而表模塊則只用一個(gè)對象來處理所有訂單(表模塊沒有標(biāo)識(shí)符來標(biāo)出它所代表的實(shí)體對象)。

1)運(yùn)行機(jī)制

長處:允許你將數(shù)據(jù)與行為封裝在一起,同時(shí)有可以充分利用關(guān)系數(shù)據(jù)庫的優(yōu)點(diǎn)

2)使用時(shí)機(jī)

當(dāng)使用記錄集存取表數(shù)據(jù)時(shí)使用(表模塊很大程度上依賴于以表方式組織的數(shù)據(jù))
  

3)示例:

設(shè)計(jì)類圖如下:
  
    

4. 服務(wù)層

服務(wù)層定義了應(yīng)用的邊界和從接口客戶層角度所能看到的可用操作集。它封裝了應(yīng)用的業(yè)務(wù)邏輯、事務(wù)控制及其操作實(shí)現(xiàn)中的響應(yīng)協(xié)調(diào)。
  

1)運(yùn)行機(jī)制

業(yè)務(wù)邏輯分類:領(lǐng)域邏輯、應(yīng)用邏輯

兩種基本的實(shí)現(xiàn)方法:

領(lǐng)域外觀方法:

服務(wù)層以領(lǐng)域模型之上的瘦外觀集合方式實(shí)現(xiàn)(負(fù)責(zé)實(shí)現(xiàn)外觀的類不包含任何業(yè)務(wù)邏輯,所有業(yè)務(wù)邏輯均由領(lǐng)域模型實(shí)現(xiàn))

操作腳本方法:

服務(wù)層由一組相對復(fù)雜的類組成,這些類直接實(shí)現(xiàn)應(yīng)用邏輯,但將領(lǐng)域邏輯委托給封裝好的領(lǐng)域?qū)ο箢?/p>

服務(wù)層接口時(shí)粗粒度的,必要時(shí)候可以遠(yuǎn)程調(diào)用(在服務(wù)層之上增加遠(yuǎn)程外觀或者直接讓服務(wù)層實(shí)現(xiàn)遠(yuǎn)程接口)
  

2)使用時(shí)機(jī) 服務(wù)層優(yōu)點(diǎn):

它定義了一個(gè)公共的應(yīng)用操作集合,這個(gè)集合可被各種客戶使用,而且服務(wù)層在每個(gè)操作中都會(huì)協(xié)調(diào)應(yīng)用的響應(yīng)。

當(dāng)業(yè)務(wù)邏輯有多種客戶,或者用例響應(yīng)中的多個(gè)事務(wù)性資源,則需要服務(wù)層

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30075.html

相關(guān)文章

  • 十天-《企業(yè)應(yīng)用架構(gòu)模式》-數(shù)據(jù)源架構(gòu)模式

    摘要:運(yùn)行機(jī)制表數(shù)據(jù)入口包含了用于訪問單個(gè)表或試圖的所有,如選擇插入更新刪除等。其他代碼調(diào)用它的方法來實(shí)現(xiàn)所有與數(shù)據(jù)庫的交互。示例如下圖分別是普通情況下充分利用特征下的表數(shù)據(jù)入口實(shí)現(xiàn)行數(shù)據(jù)入口充當(dāng)數(shù)據(jù)源中單條記錄入口的對象,每行一個(gè)實(shí)例。 1. 表數(shù)據(jù)入口   充當(dāng)數(shù)據(jù)庫表訪問入口的對象,一個(gè)實(shí)例處理表中所有的行。 1)運(yùn)行機(jī)制:     表數(shù)據(jù)入口包含了用于訪問單個(gè)表或試圖的所有SQL,如...

    Drummor 評論0 收藏0
  • 二天-《企業(yè)應(yīng)用架構(gòu)模式》-組織領(lǐng)域邏輯

    摘要:模型抉擇領(lǐng)域邏輯復(fù)雜度抉擇領(lǐng)域邏輯復(fù)雜度較低時(shí),選擇事物腳本如果開發(fā)環(huán)境擁有大量基于記錄集的工具和,可以選擇表模塊開發(fā)小組經(jīng)驗(yàn)豐富時(shí),選擇領(lǐng)域模型種模式并不互相排斥,可以同時(shí)使用服務(wù)層服務(wù)層是從領(lǐng)域?qū)臃蛛x出來的,用于置于底層的領(lǐng)域模型或表模 1. 模型抉擇: 1)領(lǐng)域邏輯復(fù)雜度:   showImg(https://segmentfault.com/img/remote/1460000...

    wwolf 評論0 收藏0
  • 三天-《企業(yè)應(yīng)用架構(gòu)模式》-映射到關(guān)系數(shù)據(jù)庫

    摘要:如果數(shù)據(jù)非常類似,可把數(shù)據(jù)從內(nèi)存方案中轉(zhuǎn)化到邏輯數(shù)據(jù)存儲(chǔ)方案,映射從邏輯數(shù)據(jù)存儲(chǔ)方案到實(shí)際物理存儲(chǔ)方案第二部包含區(qū)別使用元數(shù)據(jù)元數(shù)據(jù)映射基于把映射濃縮到元數(shù)據(jù)文件的方法。元數(shù)據(jù)文件詳細(xì)描述數(shù)據(jù)庫中列如何映射到對象的域。 關(guān)系數(shù)據(jù)庫之所以取得成功,最重要的原因之一就是SQL的存在,它是數(shù)據(jù)庫通信標(biāo)準(zhǔn)語言。 1. 架構(gòu)模式: 驅(qū)動(dòng)領(lǐng)域邏輯訪問數(shù)據(jù)的方式: SQL語句嵌入在程序設(shè)計(jì)語言中; ...

    chenatu 評論0 收藏0
  • 企業(yè)應(yīng)用架構(gòu)模式-30天閱讀計(jì)劃

    摘要:企業(yè)應(yīng)用在某些方面要比電信軟件簡單得多多線程問題沒有那么困難,無需關(guān)注硬件設(shè)備與軟件的集成。但是,在某些方面,企業(yè)應(yīng)用又比電信軟件復(fù)雜得多企業(yè)應(yīng)用一般都涉及到大量復(fù)雜數(shù)據(jù),而且必須處理很多不合邏輯的業(yè)務(wù)規(guī)則。 構(gòu)建計(jì)算機(jī)系統(tǒng)并非易事。隨著系統(tǒng)復(fù)雜性的增大,構(gòu)建相應(yīng)軟件的難度將呈指數(shù)增大。 同其他行業(yè)一樣,我們只有在不斷的學(xué)習(xí)中進(jìn)步,從成功經(jīng)驗(yàn)中學(xué)習(xí),從失敗教訓(xùn)中學(xué)習(xí),才有望克服這些困難...

    null1145 評論0 收藏0
  • 一文讀懂微服務(wù)架構(gòu)的重構(gòu)策略

    摘要:相反,它由單體中的適配器和使用一個(gè)或多個(gè)進(jìn)程間通信機(jī)制的服務(wù)組成。因?yàn)槲⒎?wù)架構(gòu)的本質(zhì)是一組圍繞業(yè)務(wù)功能組織的松耦合服務(wù)。如果你嘗試將此類功能實(shí)現(xiàn)為服務(wù),則通常會(huì)發(fā)現(xiàn),由于過多的進(jìn)程間通信而導(dǎo)致性能下降。這是快速展示微服務(wù)架構(gòu)價(jià)值的好方法。你很有可能正在處理大型復(fù)雜的單體應(yīng)用程序,每天開發(fā)和部署應(yīng)用程序的經(jīng)歷都很緩慢而且很痛苦。微服務(wù)看起來非常適合你的應(yīng)用程序,但它也更像是一項(xiàng)遙不可及的必殺...

    jaysun 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<