女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入淺出DDD編程

OSC開源社區(qū) ? 來源:百度Geek說 ? 作者:劉嘿嘿、離夏、立 ? 2022-12-01 16:01 ? 次閱讀

導(dǎo)讀

introduction

最近幾年,微服務(wù)拆分大行其道,在業(yè)務(wù)越來越復(fù)雜的情況下,許多業(yè)務(wù)紛紛拋棄了傳統(tǒng)單體架構(gòu),擁抱微服務(wù)。但隨著微服務(wù)的拆分結(jié)束,大家又發(fā)現(xiàn)了新的問題,比如服務(wù)間邏輯復(fù)雜,運(yùn)維復(fù)雜性變高,微服務(wù)架構(gòu)變得越來越難以管理,最終演化成大泥球架構(gòu)。

而本文主要介紹如何通過DDD對(duì)微服務(wù)進(jìn)行拆分,首先介紹了什么是DDD,通過從分析DDD的優(yōu)勢(shì),到如何通過DDD進(jìn)行業(yè)務(wù)拆分,并且在最后通過代碼樣例的方式,深入淺出的為讀者介紹了DDD代碼的核心實(shí)現(xiàn)。幫助大家進(jìn)一步的了解DDD應(yīng)該如何落地。

全文6271字,預(yù)計(jì)閱讀時(shí)間16分鐘。

GEEK TALK

01什么是DDD

DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)),起源于2004年Eric Evans出版《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》,近些年由于微服務(wù)的興起,大家逐漸對(duì)單體服務(wù)進(jìn)行拆分。

但是隨著微服務(wù)拆分,由于業(yè)務(wù)邏輯拆分不合理導(dǎo)致調(diào)用環(huán)路問題、重試風(fēng)暴問題等等,都給系統(tǒng)造成了更多的風(fēng)險(xiǎn),并且隨著業(yè)務(wù)更加復(fù)雜微服務(wù)職責(zé)劃分出現(xiàn)問題,則業(yè)務(wù)迭代效率變得越來越差,最終變成一個(gè)大泥球系統(tǒng)。

而DDD的優(yōu)勢(shì)便是指導(dǎo)業(yè)務(wù)進(jìn)行微服務(wù)拆分,下面我們以會(huì)員中心為例來具體講解一下如何進(jìn)行業(yè)務(wù)拆分以及相關(guān)的代碼實(shí)現(xiàn)。

GEEK TALK

02使用DDD的優(yōu)勢(shì)是什么

2.1語言統(tǒng)一,消除誤解

很多時(shí)候未必產(chǎn)品經(jīng)理才是最懂業(yè)務(wù)的那個(gè)人,例如某些B端服務(wù)很多時(shí)候是運(yùn)營(yíng)人員在向產(chǎn)品同學(xué)提需求,在經(jīng)過產(chǎn)品經(jīng)理的翻譯后,才轉(zhuǎn)化成一個(gè)需求文檔,這樣就會(huì)導(dǎo)致有時(shí)候產(chǎn)品經(jīng)理并不能完全表達(dá)出實(shí)際的需求,這就會(huì)導(dǎo)致開發(fā)人員交付的軟件無法達(dá)到預(yù)期。從而導(dǎo)致返工,浪費(fèi)人力。

而DDD需要設(shè)計(jì)一種通用的語言,拉齊各個(gè)需求方的理解,一旦產(chǎn)品同學(xué)和技術(shù)同學(xué)對(duì)業(yè)務(wù)具備了相同的理解,統(tǒng)一的語言,那在后續(xù)的需求迭代種就會(huì)變得非常順暢。

在改造初期我們耗費(fèi)了非常大的精力向產(chǎn)品同學(xué)講清楚哪些抽象應(yīng)該定義為實(shí)體,實(shí)體與實(shí)體的關(guān)系是什么,在不斷的溝通、磨合中,最好我們成功建立起了一些通用的語言,拉齊了產(chǎn)品經(jīng)理、運(yùn)營(yíng)同學(xué)、開發(fā)人員的理解,最大幅度的消除了由于理解不一致導(dǎo)致的返工、重構(gòu)等工作。

2.2更專注于業(yè)務(wù)的戰(zhàn)略設(shè)計(jì)

戰(zhàn)略設(shè)計(jì)側(cè)重于業(yè)務(wù)梳理,結(jié)合業(yè)務(wù)流程劃分對(duì)應(yīng)的核心域、通用域、支撐域。戰(zhàn)略設(shè)計(jì)的核心價(jià)值是圍繞產(chǎn)品規(guī)劃重點(diǎn)投入資源,確保重點(diǎn)子業(yè)務(wù)可以確保得到足夠的人力支持。

2.3設(shè)計(jì)即代碼,代碼即設(shè)計(jì)

在過去的項(xiàng)目詳細(xì)設(shè)計(jì)中,我們的重心在數(shù)據(jù)怎么存儲(chǔ)?數(shù)據(jù)流通是什么樣的。這樣可能導(dǎo)致在設(shè)計(jì)文檔和代碼中就具備較大的Gap,實(shí)現(xiàn)上就可能有問題。

而DDD倡導(dǎo)的是思考,而不是寫代碼。在代碼設(shè)計(jì)之前定義好領(lǐng)域語言,和領(lǐng)域?qū)<覝贤o礙,定義好領(lǐng)域規(guī)則,這樣在寫代碼的時(shí)候留下較少的思考。代碼只是把設(shè)計(jì)文檔翻譯成代碼,寫代碼更像是在照著設(shè)計(jì)文檔在做填空題,只需要將代碼填到指定的文件中即可。

GEEK TALK

03如何使用DDD

3.1DDD戰(zhàn)略設(shè)計(jì)

3.1.1劃分核心域,通用域、支撐域

在實(shí)際的工作中,很多產(chǎn)品經(jīng)理會(huì)陷入到各種繁雜的業(yè)務(wù)指標(biāo)中,無法從繁雜的業(yè)務(wù)中抽身,定義好哪些是重要的模塊,或者無法表達(dá)出業(yè)務(wù)各個(gè)模塊中最重要的是什么。這種情況就會(huì)導(dǎo)致每個(gè),產(chǎn)品沒有這就會(huì)導(dǎo)致在人員分工、資源申請(qǐng)上出現(xiàn)一些問題。

做戰(zhàn)略設(shè)計(jì),最核心的事情就是劃分清楚核心域,通用域、支撐域,我們把更多的精力投入到核心的問題中,而不被大量次要的問題淹沒。

核心域:業(yè)務(wù)最核心的部分,這部分需要產(chǎn)品同學(xué)確定,例如,從長(zhǎng)線來看我們主要核心做的投入,是做流量引入,還是做變現(xiàn)

支撐域:業(yè)務(wù)中非核心的部分,若產(chǎn)品確定現(xiàn)有核心域是流量引入,那在流量變現(xiàn)部分業(yè)務(wù),就是支撐域

通用域:例如登錄驗(yàn)證、驗(yàn)證碼、支付能力等則更多的使用公司內(nèi)部的中臺(tái)能力,若公司沒有通用的中臺(tái)能力,我們也會(huì)以建設(shè)中臺(tái)的思路自建一個(gè)內(nèi)部的中臺(tái)服務(wù)

本處僅僅描述我們對(duì)于戰(zhàn)略設(shè)計(jì)理解,不對(duì)戰(zhàn)略設(shè)計(jì)展開說明。

3.1.2劃分邊界

微服務(wù)職責(zé)的劃分是執(zhí)行環(huán)節(jié)的第一步,也是最重要的一步,尤其從大單體拆分為多個(gè)微服務(wù)時(shí),需要考慮以下幾點(diǎn)

要通過領(lǐng)域驅(qū)動(dòng)劃分邊界,若暫時(shí)考慮不清楚邊界,那就先不要拆分

明確微服務(wù)分層,上游服務(wù)只能對(duì)下游服務(wù)產(chǎn)生依賴,防止微服務(wù)環(huán)路調(diào)用問題,同時(shí)下游服務(wù)需要考慮重試風(fēng)暴問題

核心域的微服務(wù)需要具備故障降級(jí),容災(zāi)能力

要基于組織架構(gòu)進(jìn)行邊界的劃分,微服務(wù)的梳理其實(shí)也是團(tuán)隊(duì)的梳理,過度的拆分可能導(dǎo)致更多的溝通成本

3.2DDD戰(zhàn)術(shù)設(shè)計(jì)

3.2.1 名詞解釋

聚合與聚合根:是一組相關(guān)對(duì)象的組合,可以作為拆分微服務(wù)的最小單位,具有高內(nèi)聚、低耦合的特點(diǎn),聚合在DDD中是一個(gè)很重要的概念,核心領(lǐng)域往往都需要用聚合來表達(dá);聚合根為其根節(jié)點(diǎn),聚合根有實(shí)體的特點(diǎn),具有全局唯一標(biāo)識(shí),有獨(dú)立的生命周期。一個(gè)聚合只有一個(gè)聚合根,聚合根在聚合內(nèi)對(duì)實(shí)體和值對(duì)象采用直接對(duì)象引用的方式進(jìn)行組織和協(xié)調(diào),聚合根與聚合根之間通過 ID 關(guān)聯(lián)的方式實(shí)現(xiàn)聚合之間的協(xié)同。

領(lǐng)域服務(wù):一些重要的領(lǐng)域行為或操作,可以歸類為領(lǐng)域服務(wù)。它既不是實(shí)體,也不是值對(duì)象的范疇。

領(lǐng)域事件:領(lǐng)域事件是對(duì)領(lǐng)域內(nèi)發(fā)生的活動(dòng)進(jìn)行的建模。

實(shí)體:多個(gè)屬性、行為及操作的載體,實(shí)體有全局唯一性標(biāo)識(shí)(ID),有獨(dú)立的生命周期。例如會(huì)員用戶中,每個(gè)會(huì)員都可以被認(rèn)為一個(gè)實(shí)體,都有userid唯一性標(biāo)識(shí)。

值對(duì)象:通過對(duì)象屬性來識(shí)別的對(duì)象,沒有標(biāo)識(shí)符概念,無生命周期,只描述業(yè)務(wù)屬性。如在一個(gè)會(huì)員系統(tǒng)中,會(huì)員權(quán)益信息集合即可看為一個(gè)值對(duì)象,只用于對(duì)權(quán)益屬性的描述,只有數(shù)據(jù)初始化操作和有限的不涉及修改數(shù)據(jù)的行為。

3.2.2 如何進(jìn)行戰(zhàn)術(shù)設(shè)計(jì)

接下來我們以會(huì)員中心為例為大家詳細(xì)介紹

在戰(zhàn)略模型中我們已經(jīng)劃分清楚邊界,梳理不同領(lǐng)域及相關(guān)關(guān)系。接下來我們需要從戰(zhàn)術(shù)層面上剖析領(lǐng)域模型內(nèi)部之間的關(guān)系,對(duì)會(huì)員上下文進(jìn)行建模(下文為簡(jiǎn)化版)。

8f7baa40-6cc7-11ed-8abf-dac502259ad0.png

在會(huì)員上下文中,我們以會(huì)員實(shí)體為中心,通過會(huì)員(vipinfo)這個(gè)聚合根來控制會(huì)員權(quán)限,一個(gè)會(huì)員包括用戶ID(uid)、會(huì)員權(quán)益(Privilege)、所屬機(jī)構(gòu)(tp)以及會(huì)員碼(vip_code),而會(huì)員碼針對(duì)訂單維度分別對(duì)應(yīng)不同的權(quán)益內(nèi)容(privilege)。

這些值對(duì)象不具有業(yè)務(wù)行為特征,只關(guān)心本身屬性值。會(huì)員實(shí)體具有業(yè)務(wù)行為及業(yè)務(wù)邏輯,例如會(huì)員入駐、會(huì)員變更、會(huì)員綁碼等,外部訪問會(huì)員權(quán)益值對(duì)象等都需要通過會(huì)員實(shí)體來進(jìn)行。

在會(huì)員域中,我們同時(shí)支持會(huì)員碼及會(huì)員維度的領(lǐng)域服務(wù),包括購(gòu)買、獲取會(huì)員信息、綁碼等服務(wù)。

3.3 DDD代碼實(shí)現(xiàn)

3.3.1 項(xiàng)目介紹

會(huì)員微服務(wù)主要實(shí)現(xiàn)獲得會(huì)員信息、會(huì)員碼信息、綁會(huì)員碼、會(huì)員碼退款等操作。

服務(wù)使用ddd四層架構(gòu),分為接口層、應(yīng)用層、領(lǐng)域?qū)雍突A(chǔ)層。

本服務(wù)因?yàn)闃I(yè)務(wù)復(fù)雜性較低,為減少冗余代碼,使用松散分層。(架構(gòu)根據(jù)耦合的緊密程度又可以分為兩種:嚴(yán)格分層架構(gòu)和松散分層架構(gòu)。嚴(yán)格分層:任何層只能依賴與他相鄰的下層。松散分層:任何層可以依賴任意他的下層。)

3.3.2 項(xiàng)目結(jié)構(gòu)

項(xiàng)目結(jié)構(gòu)如圖所示分為四層、對(duì)應(yīng)到到代碼目錄上(附錄1),代碼一級(jí)目錄有interface(接口層)、application(應(yīng)用層)、domain(領(lǐng)域?qū)樱nfrastructure(基礎(chǔ)層)四個(gè)目錄。

90172178-6cc7-11ed-8abf-dac502259ad0.jpg

接口層:

接口層處理接口定義、批處理相關(guān)邏輯。目錄如下:

|-- interface
|   |-- command // 批處理接口層
|   |   |-- controller 
|   |   |   `-- vip
|   |   |       |-- add.go 
|   |   |       `-- update.go
|   |   |-- router.go // 代碼入口定義
|   |   `-- script.go
|   `-- http // api接口層
|       |-- controller // 接口入?yún)⑿r?yàn)、定義,調(diào)用下層代碼
|       |   |-- lawyer
|       |   |   |-- add.go
|       |   |   `-- update.go
|       |   `-- vipcode
|       |       |-- add.go
|       |       `-- update.go
|       |-- router.go // api路由

?

interface目錄下有command、http兩個(gè)目錄,其中,

command:包含批處理入口,批處理路由,編排批處理相關(guān)領(lǐng)域?qū)臃?wù)、事件、實(shí)體和基礎(chǔ)層相關(guān)函數(shù)。批處理代碼無需應(yīng)用層直接依賴領(lǐng)域?qū)印⒒A(chǔ)層,降低代碼冗余度。

http:包含接口路由、定義,接口入?yún)⑿r?yàn)、定義。

應(yīng)用層:

主要負(fù)責(zé)組織、編排領(lǐng)域?qū)臃?wù)、事件、實(shí)體和基礎(chǔ)層相關(guān)函數(shù)。

application下有service、viewmodel。

|--application
|   |-- service //應(yīng)用層服務(wù)
|   |   |-- lawyer
|   |   |   |-- add.go
|   |   |   `-- update.go
|   |   `-- vip
|   |       |-- add.go
|   |       `-- update.go
|   `-- viewmodel // 視圖
|       |-- lawyer
|       |   |-- transform.go // 轉(zhuǎn)化函數(shù)
|       |   `-- vm.go //視圖數(shù)據(jù)結(jié)構(gòu)
|       `-- vip
|           |-- transform.go
|           `-- vm.go

service:對(duì)多個(gè)領(lǐng)域服務(wù)、基礎(chǔ)層ral調(diào)用、數(shù)據(jù)持久化服務(wù)進(jìn)行封裝、編排,為上層提供更粗粒度的服務(wù),調(diào)用領(lǐng)域?qū)臃?wù),倉(cāng)儲(chǔ)和事件,因?yàn)樗缮⒎謱咏Y(jié)構(gòu),也可以調(diào)用基礎(chǔ)層服務(wù)。

viewmodel:為上層多變的數(shù)據(jù)結(jié)構(gòu)要求,提供相應(yīng)視圖定義和實(shí)體到視圖的轉(zhuǎn)化方法。

領(lǐng)域?qū)樱?/strong>

領(lǐng)域?qū)哟娣艠I(yè)務(wù)核心邏輯包括聚合根、實(shí)體、值對(duì)象、倉(cāng)儲(chǔ)接口、領(lǐng)域服務(wù)、領(lǐng)域事件接口等。

領(lǐng)域?qū)酉路钟形鍌€(gè)目錄:

|--domain
|   |-- aggregate // 聚合
|   |   |-- lawyer
|   |   |   |-- entity.go // 實(shí)體定義
|   |   |   `-- vo.go // 值對(duì)象
|   |   `-- vipcode
|   |       |-- entity.go
|   |       |-- vo.go
|   |-- event // 領(lǐng)域事件
|   |   `-- vipcode
|   |       `-- order.go
|   |-- repository // 倉(cāng)儲(chǔ)接口
|   |   |-- lawyer.go
|   |   `-- vipcode.go
|   |-- adaptor // 防腐層
|   |   `-- sms.go
|   `-- service // 領(lǐng)域服務(wù)
|       |-- lawyer
|       |   `-- vipcode.go
|       `-- vipcode
|           `-- vipcode.go

aggregate:放置聚合根,實(shí)體、值對(duì)象數(shù)據(jù)結(jié)構(gòu)定義,以及相關(guān)初始化代碼。

領(lǐng)域內(nèi)數(shù)據(jù)流轉(zhuǎn)處理依賴,相關(guān)聚合根,下游服務(wù)發(fā)生改變——如數(shù)據(jù)表結(jié)構(gòu)變換,只需將相關(guān)數(shù)據(jù)轉(zhuǎn)化為業(yè)務(wù)定義聚合根,代碼更改只需在基礎(chǔ)層,不涉及上層。

下面是會(huì)員碼實(shí)體示例,里面又包含有訂單值對(duì)象,會(huì)員碼機(jī)構(gòu)值對(duì)象和會(huì)員碼權(quán)益值對(duì)象。

// EntityVipCode 會(huì)員碼實(shí)體(簡(jiǎn)化版本)
type EntityVipCode struct {
  ValidityStart *time.Time       // 綁碼開始時(shí)間
  ValidityEnd   *time.Time       // 綁定會(huì)員碼結(jié)束時(shí)間
  OrderInfo     *VOOrderInfo     // 訂單信息值對(duì)象
  BuyerInfo     *VOCodeBuyerInfo // 買會(huì)員碼機(jī)構(gòu)信息
  PrivilegeInfo *VOPrivilege     // 會(huì)員碼包含的權(quán)益
}

event:放置基礎(chǔ)層事件抽象的接口——為了實(shí)現(xiàn)依賴倒置。

repository:放置基礎(chǔ)層數(shù)據(jù)持久化服務(wù)抽象的接口。

service:存放一下領(lǐng)域服務(wù)代碼,向應(yīng)用層服務(wù)提供方法調(diào)用,依賴倒置在ddd中使用頻繁 。

adaptor:存放防腐層數(shù)據(jù)結(jié)構(gòu)定義、轉(zhuǎn)化函數(shù)。

防腐層在下游服務(wù)和上游服務(wù)之間,將下游服務(wù)翻譯為上游服務(wù)語言,拋去無需關(guān)注的,防止上層服務(wù)摻雜過多無需關(guān)注雜質(zhì)。

ddd中廣泛應(yīng)用了依賴倒置原則(即調(diào)用要依賴于抽象接口,不要依賴于具體實(shí)現(xiàn)),減少ddd各層之間的耦合性,提高系統(tǒng)的穩(wěn)定性,減少并行開發(fā)風(fēng)險(xiǎn),提高代碼的可讀性和可維護(hù)性,非常適合ddd這樣為應(yīng)對(duì)頻繁迭代的設(shè)計(jì)思想。

如下創(chuàng)建訂單體現(xiàn)依賴倒置思想,無需關(guān)注具體實(shí)現(xiàn),假若使用訂單方發(fā)生了變更(如更換服務(wù)提供方、服務(wù)提供方更換實(shí)現(xiàn)邏輯或者服務(wù)實(shí)現(xiàn)邏輯更改了),我們?cè)谏蠈哟a只需要更改傳入的參數(shù),無需關(guān)注其他變更。

// ReqCreateOrder 創(chuàng)建訂單
func ReqCreateOrder(ctx context.Context, vipRepo repository.IVipCodeRepo, vipcodeentity vipcode.EntityVipCode) (*order.PreorderRetData, error)


type IVipCodeRepo interface {
  CreateOrder(ctx context.Context, ev vipcode.EntityVipCode) (*liborder.PreorderRetData, error)
  UpdateVipCode(ctx context.Context, patch map[string]interface{}, conditions map[string]interface{}) (int64, error)
}

基礎(chǔ)設(shè)施層:

基礎(chǔ)層存放領(lǐng)域事件、數(shù)據(jù)持久化、ral調(diào)用相關(guān)代碼。

其下有三個(gè)目錄:

|-- infrastructure
|   |-- event // 領(lǐng)域事件實(shí)現(xiàn)
|   |   |-- init.go
|   |   `-- vipcode
|   |       `-- consume_order.go
|   |-- persistence // 持久化存儲(chǔ)實(shí)現(xiàn)
|   |   |-- init.go
|   |   |-- lawyer
|   |   |   |-- po.go
|   |   |   |-- repo.go
|   |   |   `-- transform.go
|   |   `-- vipcode
|   |       |-- po.go
|   |       |-- repo.go
|   |       `-- transform.go
|   `-- rpc // rpc調(diào)用實(shí)現(xiàn)
|       |-- db
|       |-- init.go
|       |-- redis

event:領(lǐng)域事件具體實(shí)現(xiàn),依賴rpc服務(wù)。

persistence:放置儲(chǔ)存持久化代碼,數(shù)據(jù)庫(kù)存儲(chǔ)對(duì)應(yīng)PO,和PO到實(shí)體的轉(zhuǎn)化方法,所有具體實(shí)現(xiàn)方法都出參都需要轉(zhuǎn)化成實(shí)體供給上層使用。

rpc:rpc遠(yuǎn)程調(diào)用其他微服務(wù)、消息中間件等服務(wù)代碼。

GEEK TALK

04總結(jié)

用好DDD的關(guān)鍵,就是理解DDD和核心思想,其本質(zhì)也是面向?qū)ο蟮脑O(shè)計(jì)方法,即是把業(yè)務(wù)模型轉(zhuǎn)換為對(duì)象模型從而來控制業(yè)務(wù)持續(xù)變化而導(dǎo)致系統(tǒng)的復(fù)雜性,使得系統(tǒng)更加具有可擴(kuò)展性、可維護(hù)性。

在相對(duì)比較小、邏輯簡(jiǎn)單的微服務(wù),在代碼實(shí)現(xiàn)層面,我們并沒有按照DDD進(jìn)行開發(fā),傳統(tǒng)的MVC足以應(yīng)對(duì),若強(qiáng)行使用DDD則會(huì)徒增大家的工作量。

DDD的核心是通過戰(zhàn)略設(shè)計(jì)來匹配產(chǎn)品層面的業(yè)務(wù)規(guī)劃,在戰(zhàn)術(shù)設(shè)計(jì)層面通過對(duì)每個(gè)模塊進(jìn)行抽象、建模來完成業(yè)務(wù)梳理劃分邊界,在代碼實(shí)現(xiàn)層面來完成設(shè)計(jì)文檔到代碼的映射,做到設(shè)計(jì)即代碼、代碼即設(shè)計(jì)。

而DDD只適用于大型的、復(fù)雜的業(yè)務(wù)場(chǎng)景。切勿為了DDD而DDD。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3679

    瀏覽量

    94863
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4886

    瀏覽量

    70249
  • ddd
    ddd
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    3014
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    145

    瀏覽量

    7671

原文標(biāo)題:深入淺出DDD編程

文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入淺出AVR

    深入淺出AVR,一本書。
    發(fā)表于 07-15 12:02

    深入淺出玩轉(zhuǎn)FPGA

    深入淺出玩轉(zhuǎn)FPGA
    發(fā)表于 07-21 09:21

    深入淺出Linux_設(shè)備驅(qū)動(dòng)編程

    深入淺出Linux_設(shè)備驅(qū)動(dòng)編程
    發(fā)表于 08-16 15:57

    深入淺出ARM7

    深入淺出ARM7
    發(fā)表于 08-18 10:12

    HDMI技術(shù)深入淺出

    HDMI技術(shù)深入淺出
    發(fā)表于 08-19 10:52

    深入淺出Android

    深入淺出Android
    發(fā)表于 08-20 10:14

    深入淺出Linux_設(shè)備驅(qū)動(dòng)編程

    深入淺出Linux_設(shè)備驅(qū)動(dòng)編程
    發(fā)表于 08-20 14:58

    深入淺出Android

    深入淺出Android
    發(fā)表于 04-26 10:48

    深入淺出安防視頻監(jiān)控系統(tǒng)

    深入淺出安防視頻監(jiān)控系統(tǒng)深入淺出安防視頻監(jiān)控系統(tǒng)
    發(fā)表于 05-22 19:28

    深入淺出AVR

    深入淺出AVR
    發(fā)表于 08-23 10:10

    深入淺出matlab

    深入淺出matlab 本書介紹了MATLAB 7.X版本與其他語言混合編程的方法。內(nèi)容包括在MATLAB中以文件方式導(dǎo)入、導(dǎo)
    發(fā)表于 06-18 09:13 ?261次下載
    <b class='flag-5'>深入淺出</b>matlab

    深入淺出數(shù)據(jù)分析

    深入淺出數(shù)據(jù)分析,有需要的朋友下來看看。
    發(fā)表于 01-15 14:22 ?0次下載

    深入淺出談多層面板布線技巧

    深入淺出談多層面板布線技巧
    發(fā)表于 12-13 22:20 ?0次下載

    深入淺出數(shù)字信號(hào)處理

    深入淺出數(shù)字信號(hào)處理
    發(fā)表于 12-07 20:14 ?611次閱讀

    深入淺出學(xué)習(xí)250個(gè)通信原理資源下載

    深入淺出學(xué)習(xí)250個(gè)通信原理資源下載
    發(fā)表于 04-12 09:16 ?29次下載