• 腾讯分分彩代理官网

腾讯分分彩代理官网

作者︰netfocus  發布ji)掌qi)︰2020-02-19 08:57:10
Tag標簽︰領域  談我(wo)  
  • 從遇到問題開始

    當人們要做一個軟件(jian)系統時,一般總是因為遇到了什麼問題,然後希望通(tong)過一個軟件(jian)系統來解決。

    比re)紓 wo)是一家(jia)企業,然後我(wo)覺得我(wo)現在(zai)線下銷售自己的產品還不夠(gou),我(wo)希望能夠(gou)在(zai)線上也(ye)能銷售自己的產品。所以,自然而然就想到要做一個普通(tong)電商(shang)系統,用于實現在(zai)線銷售自己企業產品的目的。

    再比re)紓 wo)是一家(jia)互(hu)聯網公司,公司有很多系統對外提供服務,面向很多客戶端設備。但是最(zui)近由于各(ge)種原(yuan)因,導(dao)致(zhi)服務經常出故障。所以,我(wo)們希望通(tong)過各(ge)種措(cuo)施提高服務的質量(liang)和(he)穩(wen)定性(xing)。其中的一個措(cuo)施就是希望能做一個灰度que) 嫉鈉教  飧銎教 梢蘊 └葉確(que) 嫉姆瘛H緩螅 蹦掣 滴襝低匙雋艘恍xie)修(xiu)改並(bing)需要發布時,可以使用我(wo)們的灰度que) 計教 捶淺7獎愕氖迪只葉確(que) 嫉墓δ塴1熱(re)繚zai)灰度que) 計教ㄉ戲(xi)獎愕畝ㄖ圃市xu)哪些(xie)特定的客戶端才(cai)會訪(fang)問新服務,哪些(xie)客戶端繼續(xu)使用老xi)瘛;葉確(que) 計教 梢蘊 └ge)種灰度的策略。有了這樣的灰度que) 薊ji)制,那即便系統的新邏輯(ji)有什麼問題,受(shou)影(ying)響的面也(ye)不huan)岷艽da),在(zai)可控範圍(wei)內。所以,如(ru)果公司里的所有對外提供服務的系統都接入了灰度平台,那這些(xie)系統的發布環節就可以更加有保障了。

    總之,我(wo)們做任(ren)何(he)一個軟件(jian)系統,都是有xing)yuan)因的mo) fu)則(ze)就沒必要做這個系統,而這個原(yuan)因就是我(wo)們遇到的問題。所以,通(tong)過問題,我(wo)們就知道了我(wo)們qie)枰 桓鍪裁囪南低常 飧魷低辰餼鍪裁囪奈侍狻Wzui)後,我(wo)們就很自然的得出了一個目標,即知道了自己要什麼。比re)縹wo)要做一個論壇(tan)、一個博客系統、一個電商(shang)平台、一個灰度que) 枷低場 桓DE、一個分布式消息隊列、一個通(tong)信框架,等等。

    DDD切(qie)入點1 - 理解概念

    DDD的全稱(chen)為Domain-driven Design,即領域驅(qu)動設計。下面我(wo)從領域、問題域、領域模(mo)型、設計、驅(qu)動這幾個詞語的含義和(he)聯系的角度re)qu)闡述(shu)DDD是如(ru)何(he)融入到我(wo)們平時的軟件(jian)開發初期(qi)階(jie)段的。要理解什麼是領域驅(qu)動設計,首(shou)先(xian)要理解什麼是領域,什麼是設計,還有驅(qu)動是什麼意思,什麼驅(qu)動什麼。

    腾讯分分彩代理官网

    前面我(wo)們已經清楚的知道我(wo)們現在(zai)要做一個什麼樣的系統,這個系統需要解決什麼問題。我(wo)認為任(ren)何(he)一個系統都會屬于某個特定的領域,比re)緶么tan)是一個領域,只要你想做一個論壇(tan),那這個論壇(tan)的核心業務是確(que)定的mo) 熱(re)綞加杏沒?? 靨群誦幕ji)本功能。比re)緄縞shang)平台、普通(tong)電商(shang)系統,這種都屬于網上電商(shang)領域,只要是這個領域的系統,那都有商(shang)品瀏覽(lan)、購he) 怠 碌dan)、減庫存、付(fu)款交易等核心環節。所以,同一個領域的系統都具有相同的核心業務,因為他們要解決的問題的本質是類似的。

    因此,我(wo)們可以推斷(duan)出,一個領域本質上可以理解為就是一個問題域,只要是同一個領域,那問題域就相同。所以,只要我(wo)們確(que)定了系統所屬的領域,那這個系統的核心業務,即要解決的關鍵問題、問題的範圍(wei)邊界就基(ji)本確(que)定了。通(tong)常我(wo)們說,要成為一個領域的專家(jia),必須(xu)要在(zai)這個領域深(shen)入研究很多年才(cai)行。因為只有你研究了很多年,你才(cai)會遇到非常多的該領域的問題,同時你解決這個領域中的問題的經驗也(ye)非常豐富。很多時候,領域專家(jia)比技術專家(jia)更加吃(chi)香,比re)緗jin)融領域的專家(jia)。

    腾讯分分彩代理官网

    DDD中的設計主(zhu)要指領域模(mo)型的設計。為什麼是領域模(mo)型的設計而不是架構設計或其他的什麼設計呢?因為DDD是一種基(ji)于模(mo)型驅(qu)動開發的軟件(jian)開發思想,強調領域模(mo)型是整個系統的核心mo)  蚰mo)型也(ye)是整個系統的核心價值所在(zai)。每一個領域,都有一個對應(ying)的領域模(mo)型,領域模(mo)型能夠(gou)很好的幫我(wo)們解決復(fu)雜的業務問題。

    從領域和(he)代碼實現的角度來理解,領域模(mo)型綁定了領域和(he)代碼實現,確(que)保了最(zui)終的代碼實現就一定是解決了領域中的核心問題的。因為︰1)領域驅(qu)動領域模(mo)型設計;2)領域模(mo)型驅(qu)動代碼實現。我(wo)們只要保證領域模(mo)型的設計是正確(que)的mo) 湍莧que)定領域模(mo)型可以解決領域中的核心問題;同理,我(wo)們只要保證代碼實現是嚴xi)癜湊樟 蚰mo)型的意圖來落地的mo) 薔湍鼙V?zui)後出來的代碼能夠(gou)解決領域的核心問題的。這個思路,和(he)傳統的分析(xi)、設計、編碼這幾個階(jie)段被割裂(lie)(並(bing)且每個階(jie)段的產物也(ye)不同)的軟件(jian)開發方法學形(xing)成鮮明的對比。

    腾讯分分彩代理官网

    上面其實已經提到了,就是︰1)領域驅(qu)動領域模(mo)型設計;2)領域模(mo)型驅(qu)動代碼實現。這個就和(he)我(wo)們傳統的數據庫驅(qu)動開發的思路形(xing)成對比了。DDD中,我(wo)們總是以領域為邊界,分析(xi)領域中的核心問題(核心關注點),然後設計對應(ying)的領域模(mo)型,再通(tong)過領域模(mo)型驅(qu)動代碼實現。而像數據庫設計、持久化技術等這些(xie)都不是DDD的核心mo) 峭 wei)的東西。

    領域驅(qu)動設計(DDD)告訴我(wo)們的最(zui)大(da)價值我(wo)覺得是︰當我(wo)們要開發一個系統時,應(ying)該盡量(liang)先(xian)把領域模(mo)型想清楚,然後再開始動手(shou)編碼,這樣的系統後期(qi)才(cai)會很好維護。但是,很多項目(尤其是互(hu)聯網項目,為了趕工)都是一開始模(mo)型沒想清楚,一上來就開始建表寫代碼,代碼寫的非常冗余(yu),完(wan)全是過程(cheng)是的思考方式,最(zui)後導(dao)致(zhi)系統非常難(nan)以維護。而且更糟(zao)糕的是,出來混總是要還的mo) 捌qi)的領域模(mo)型設計的不好,不夠(gou)抽象,如(ru)果你的系統會長期(qi)需要維護和(he)適應(ying)業務變化,那後面你一定會遇到各(ge)種問題維護上的困難(nan),比re)縭萁 股杓撇緩俠恚 氳醬chu)冗余(yu),改BUG到處(chu)引入新的BUG,新人對這種代碼上手(shou)困難(nan),等。而那時如(ru)果你再想重構模(mo)型,那要付(fu)出的代價會比一開始重新開發還要大(da),因為你還要考慮(lv)兼(jian)容歷史(shi)的數據,數據遷移,如(ru)何(he)平滑發布等各(ge)種頭疼(teng)的問題。所以,就導(dao)致(zhi)我(wo)們最(zui)後天天加ying)ban)。

    雖(sui)然,我(wo)們都知道這個道lan)恚  俏wo)也(ye)明白,人的習慣很難(nan)改變的mo) da)部分人都很難(nan)從面向過程(cheng)式的想到哪里寫到哪里的思想轉變為基(ji)于系統化的模(mo)型驅(qu)動的思維。我(wo)想,這或許(xu)是DDD很難(nan)在(zai)中國或國外流行起(qi)來的nao)yuan)因吧(ba)。但是,我(wo)想這不應(ying)該成為我(wo)們放棄(qi)學習DDD的nao)yuan)因,對吧(ba)!

    腾讯分分彩代理官网

    領域就是問題域,有邊界,領域中有很多問題; 任(ren)何(he)一個系統要解決的那個大(da)問題都對應(ying)一個領域; 通(tong)過建立領域模(mo)型來解決領域中的核心問題,模(mo)型驅(qu)動的思想; 領域建模(mo)的目標針對我(wo)們在(zai)領域中所關心的問題,即只針對核心關注點,而不是整個領域中的所有xing)侍猓領域模(mo)型在(zai)設計時應(ying)考慮(lv)一定的抽象性(xing)、通(tong)用性(xing),以及(ji)復(fu)用價值; 通(tong)過領域模(mo)型驅(qu)動代碼的實現,確(que)保代碼讓領域模(mo)型落地,代碼最(zui)終能解決問題; 領域模(mo)型是系統的核心mo) 橇 蚰詰囊滴竦鬧苯映戀dian),具有非常大(da)的業務價值; 技術架構設計或數據存儲等是在(zai)領域模(mo)型的外圍(wei),幫助領域模(mo)型進行落地;

    DDD切(qie)入點2 - 理解領域、拆分領域、細(xi)化領域

    腾讯分分彩代理官网

    上面我(wo)們通(tong)過第(di)一步,雖(sui)然我(wo)們明確(que)了要做一個什麼樣的系統,該系統主(zhu)要解決什麼問題,但是就這樣我(wo)們還無法開始進行實dao)實男棖蠓治xi)和(he)模(mo)型設計,我(wo)們還必須(xu)將我(wo)們的問題進行拆分,需求進行細(xi)化。有些(xie)時候,需求方,即提出問題的人,很可能自己不清楚具體想要什麼。他只知道一個概念,一個大(da)的目標。比re)縊恢 酪  桓齬善苯灰紫低常 桓齷葉確(que) 枷低常 桓齙縞shang)平台,一個開發工具,等。但是他不清楚這些(xie)系統應(ying)該具體做成什麼樣子。這個時候,我(wo)認為領域專家(jia)就非常重要了,DDD也(ye)非常強調領域專家(jia)的重要性(xing)。因為領域專家(jia)對這個領域非常了解,對領域內的各(ge)種業務場景和(he)tou)髦忠滴窆嬖ze)也(ye)非常清楚,總之,對這個領域內的一切(qie)業務相關的知識都非常了解。所以,他們自然就有能力表達出系統該做成什麼樣子。所以,要知道一個系統到底該做成什麼樣子,到底哪些(xie)是核心業務關注點,只能靠沉澱(dian)領域內的各(ge)種知識,別無他法。因此,假設你現在(zai)打算做一個電商(shang)平台,但是你對這個領域沒什麼了解,那你一定得先(xian)去(qu)了解下該領域內主(zhu)流的電商(shang)平台,比re)縑員Α? miao)、京東、亞(ya)馬(ma)遜等。這個了解的過程(cheng)就是你沉澱(dian)領域知識的過程(cheng)。如(ru)果你不了解,就算你領域建模(mo)的能力再強,各(ge)種技術架構能力再強也(ye)是使不上力。領域專家(jia)ye)皇悄掣齬gu)定的角色,而是某一類人,這類人對這個領域非常了解。比re)紓 桓隹 ?嗽幣ye)可以是一個領域專家(jia)。假設你在(zai)一個公司開發和(he)維護一個系統已經好幾年了,但是這個系統的產品經理(PD)可能已經換(huan)過好幾任(ren)了,這種情況下,我(wo)相信這幾任(ren)產品經理都沒有比你更熟悉(xi)這個領域。

    腾讯分分彩代理官网

    上面我(wo)們明白了,領域建模(mo)的基(ji)礎是要先(xian)理解領域,讓自己成為領域專家(jia)。如(ru)果做到了這點,我(wo)們就打好了堅(jian)實的基(ji)礎了。但是,有時一個領域往往太復(fu)雜,涉(she)及(ji)到的領域概念、業務規則(ze)、交huan)? cheng)太多,導(dao)致(zhi)我(wo)們沒辦(ban)法直接針對這個大(da)的領域進行領域建模(mo)。所以,我(wo)們qie)枰﹦  蚪脅鴟鄭 局噬暇褪前汛da)問題拆分為小問題,然後各(ge)個擊破(po)的思路。然後既(ji)re)話岩桓齟da)的領域劃分為了多個小的領域(子域),那最(zui)關鍵的就是要理清每個子域的邊界;然後要搞清楚哪些(xie)子域是核心子域,哪些(xie)是非核心子域,哪些(xie)是公共支撐子域;然後,還要思考子域之間的聯系是什麼。那麼,我(wo)們該如(ru)何(he)劃分子域呢?我(wo)的個人看法是從業務相關性(xing)的角度re)qu)思考,也(ye)就是我(wo)們平時說的按業務功能為出發點進行劃分。還是拿經典的電商(shang)系統來分析(xi),通(tong)常一個電商(shang)系統都會包(bao)含好幾個大(da)塊,比re)紓/p>會員中心mo)焊涸鷯沒?撕hao)登錄、用戶信息的管理; 商(shang)品中心mo)焊涸鶘shang)品的展示(shi)、導(dao)航、維護; 訂單(dan)中心mo)焊涸鴝┐dan)的生成和(he)生命周期(qi)管理; 交易中心mo)焊涸鸞灰紫喙氐囊滴瘢庫存中心mo)焊涸鷂 ?shang)品的庫存gui)促(chun)銷中心mo)焊涸鷥ge)種促(chun)銷活(huo)動的支持;

    上面這些(xie)中心看起(qi)來很自然,因為大(da)家(jia)對電子商(shang)務的這個領域都jia)丫 淺J煜xi)了,所以都沒什麼疑問,好像很自然的nan)印K裕  蚧 質遣皇薔褪敲皇裁刺tao)戰了呢?顯(xian)然不是。之所以我(wo)們覺得子域劃分很簡單(dan),是因為我(wo)們對整個大(da)領域非常了解了。如(ru)果我(wo)們遇到一個冷門的領域,就沒辦(ban)法這麼容易的去(qu)劃分子域了。這就需要我(wo)們先(xian)去(qu)努力理解領域內的知識。所以,我(wo)個人從來不相信什麼子域劃分的技巧什麼的東西,因為我(wo)覺得這個工作沒有任(ren)何(he)訣竅可以使用。當我(wo)們不了解一個東西的時候,如(ru)何(he)去(qu)拆解它(ta)?當我(wo)們對整個領域有一定的熟悉(xi)了,了解了領域內的相關業務的本質和(he)關系,我(wo)們就自然而然的能劃分出合理的子域了。不過並(bing)不是所有的系統都需要劃分子域的mo) 行xie)系統只是解決一個小問題,這個問題不復(fu)雜,可能只有一兩個核心概念。所以,這種系統完(wan)全不需要再劃分子域。但不是絕對的mo) 幣桓雋 潁 wo)們的關注點越來越多,每個關注點我(wo)們關注的信息越來越多的時候,我(wo)們會不由自主(zhu)的去(qu)進一步的劃分子域。比re)紓 ye)許(xu)我(wo)們一開始將商(shang)品和(he)商(shang)品的庫存都放在(zai)商(shang)品中心里,但是後來由于庫存的維護越來越復(fu)雜,導(dao)致(zhi)揉在(zai)一起(qi)對我(wo)們的系統維護帶來一定的困難(nan)時,我(wo)們就會考慮(lv)將兩者進行拆分,這個就是所謂的業務垂直分割。

    腾讯分分彩代理官网

    通(tong)過上面的兩jiang)劍 wo)們了解了領域里的知識,也(ye)對領域進行了子域劃分。但這樣還不夠(gou),憑(ping)這些(xie)我(wo)們還無法進行後續(xu)的領域模(mo)型設計。我(wo)們還必須(xu)再進一步細(xi)化每個子域,進一步明確(que)每個子域的核心關注點,即需求細(xi)化。我(wo)覺得我(wo)們qie)枰 xi)化的方面有以下幾點︰

    梳理領域概念︰梳理出領域內我(wo)們關注的概念、概念的關系,並(bing)統一交流詞匯,形(xing)成統一語言; 梳理業務規則(ze)︰梳理出領域內我(wo)們關注的各(ge)種業務規則(ze),DDD中叫不變性(xing)(invariants),比re)縹wei)一性(xing)規則(ze),余(yu)額不能小于零等; 梳理業務場景︰梳理出領域內的核心業務場景,比re)緄縞shang)平台中的加入購he) 怠?嶠歡┐dan)、發起(qi)付(fu)款等核心業務場景; 梳理業務流程(cheng)︰梳理出領域內的關鍵業務流程(cheng),比re)綞┐dan)處(chu)理流程(cheng),退款流程(cheng)等;

    從上面這4個方面gui) wo)們從領域概念、業務規則(ze)、交huan)?【啊 滴窳 cheng)等ren) 仁嶗 宋wo)們到底要什麼,整理了整個系統應(ying)該具備的功能。這個工作我(wo)覺得是一個非常具有創造性(xing)和(he)有難(nan)度的工作。我(wo)們一方面會主(zhu)觀的定義我(wo)們想要什麼;另一方面gui) wo)們還gou)崴伎嘉wo)們要的東西的合理性(xing)。我(wo)認為這個就是產品經理的工作,產品經理必須(xu)要負起(qi)職責,把他的產品充分設計好,從各(ge)個方面去(qu)考慮(lv),如(ru)何(he)設計一個產品,才(cai)能更好的解決用戶的核心訴求,即領域內的核心問題。如(ru)果對領域不夠(gou)了解,如(ru)果想不清楚用戶到底要什麼,如(ru)果思考問題不夠(gou)全面gui) 負he)設計出一個合理的產品呢?

    關于領域概念的梳理,我(wo)覺得可以采用四色原(yuan)型分析(xi)法,這個分析(xi)法通(tong)過系統的方法,將概念劃分為不同的種類,為不同種類的概念標注不同的nan)丈 H緩蠼 廡xie)概念有機(ji)的組(zu)合起(qi)來,從而讓我(wo)們可以清晰的分析(xi)出概念和(he)tou)拍鈧 淶墓叵怠S行巳?耐 ?梢栽zai)網上搜索下四色原(yuan)型。

    注意︰上面我(wo)說的這四點,重點是梳理出我(wo)們要什麼功能,而不是思考ji)ru)何(he)實現這些(xie)功能,如(ru)何(he)實現是軟件(jian)設計人員的職責。

    DDD切(qie)入點3 - 領域模(mo)型設計

    這部分內容,我(wo)想學習DDD的人都很熟悉(xi)了。DDD原(yuan)著中提出了很多實用的建模(mo)工具︰聚合、實體、值對象、工廠、倉儲、領域服務、領域事(shi)件(jian)。我(wo)們可以使用這些(xie)工具,來設計每一個子域的領域模(mo)型。最(zui)終通(tong)過領域模(mo)型圖將設計沉澱(dian)下來。要使用這些(xie)工具,首(shou)先(xian)就要理解每個工具的含義和(he)使用場景。不要以為很簡單(dan)哦,比re)緹酆系幕 志褪且桓齜淺>哂幸帳醯幕huo)。同一個系統,不同的人設計出來的聚合是完(wan)全不同的。而且很有可能高手(shou)之間的最(zui)後設計出來的差別反而更大(da),實dao)噬餃wo)認為是世界觀的相互(hu)踫撞,呵(he)呵(he)。所以,要領域建模(mo),我(wo)覺得每個人都應(ying)該去(qu)學學哲學知識,這有助于我(wo)們更好的認識世界,更好的理解事(shi)物的本質。

    關于這些(xie)建模(mo)工具的概念和(he)如(ru)何(he)運用我(wo)就不多展開了,我(wo)ye)┘屠鏌ye)有很多這方面的介紹。下面我(wo)再講(jiang)一下我(wo)認為比較重要的東西,比re)緄降贅萌ru)何(he)領域建模(mo)?步驟應(ying)該是怎麼樣的mo)/p>

    腾讯分分彩代理官网

    通(tong)過上面我(wo)介紹的細(xi)化子域的內容,現在(zai)再來談該如(ru)何(he)領域建模(mo),我(wo)覺得就方便很多了。我(wo)的主(zhu)要方法是︰

    劃分好邊界上下文mo) tong)常每個子域(sub domain)對應(ying)一個邊界上下文mo)ounded context),同一個邊界上下文中的概念是明確(que)的mo) 揮腥ren)何(he)歧義; 在(zai)每個邊界上下文中設計領域模(mo)型,具體的領域模(mo)型設計方法有很多種,如(ru)以場景為出發點的四色原(yuan)型分析(xi)法,或者我(wo)早期(qi)寫的這篇(pian)文章;這個步驟最(zui)核心的就是找(zhao)出聚合xi) bing)找(zhao)出每個聚合xi)bao)含的信息;關于如(ru)何(he)設計ping)酆希 梢鑰匆幌攣wo)寫的這篇(pian)文章; 畫出領域模(mo)型圖,圈(quan)出每個模(mo)型中的聚合邊界; 設計領域模(mo)型時,要考慮(lv)該領域模(mo)型是否(fu)滿足業務規則(ze),同時還要綜合考慮(lv)技術實現等ren)侍猓 熱(re)綺bing)發問題;領域模(mo)型不是概念模(mo)型,概念模(mo)型不關注技術實現,領域模(mo)型關心mo)凰粵 蚰mo)型才(cai)能直接指導(dao)編碼實現; 思考領域模(mo)型是如(ru)何(he)在(zai)業務場景中發揮作用的mo) 約ji)是如(ru)何(he)參與到業務流程(cheng)的每個環節的mo)場景走查,確(que)認領域模(mo)型是否(fu)能滿足領域中的業務場景和(he)業務流程(cheng); 模(mo)型持續(xu)重構、完(wan)善、精煉(lian);

    腾讯分分彩代理官网

    抽象了領域內的核心概念,並(bing)建立概念之間的關系; 領域模(mo)型承擔了領域內的狀態(tai)的維護; 領域模(mo)型維護了領域內的數據之間的業務規則(ze),數據一致(zhi)性(xing);

    下圖是我(wo)最(zui)近做個一個普通(tong)電商(shang)系統的商(shang)品中心的領域模(mo)型圖,給大(da)家(jia)ye)慰跡/p>

    腾讯分分彩代理官网

    需要特別注意的是,領域模(mo)型設計只是整個軟件(jian)設計中的很小一部分。除了領域模(mo)型設計之外,要落地一個系統,我(wo)們還有非常多的其他設計要做,比re)紓/p>容量(liang)規劃 架構設計 數據庫設計 緩存設計 框架選型 發布方案 數據遷移、同步方案 分庫分表方案 回滾方案 高並(bing)發解決方案 一致(zhi)性(xing)選型 性(xing)能壓(ya)測方案 監控報(bao)警(jing)方案

    等等。上面這些(xie)都需要我(wo)們平時的大(da)量(liang)學習和(he)積累(lei)。作為一個合xi)竦目 ?嗽被蚣芄故Γ wo)覺得除了要會DDD領域驅(qu)動設計,還要會上面這麼多的技術能力,確(que)實是非常不容易的。所以,千(qian)萬不要以為會DDD了就以為自己很牛逼,實dao)噬夏慊岬鬧皇僑砑jian)設計中的冰山一角而已。

    總結

    本文的重點是基(ji)于我(wo)個人對DDD的一些(xie)理解,希望能整理出一些(xie)自己總結出來的一些(xie)感xing)蠔he)經驗,並(bing)分享給大(da)家(jia)。我(wo)相信很多人已經看過太多DDD書上的東西,我(wo)總是感覺書上的東西看似都太”正規“,很多時候我(wo)們讀(du)了之後很難(nan)消化,就算理解了書里的內容,當我(wo)們想要運用到實dao)jian)中時,總是感覺無從下手(shou)。本文希望通(tong)過通(tong)俗易懂的文字,介紹了一部分我(wo)對DDD的nan) 案形(xing)蠔he)實dao)jian)心得,希望能給大(da)家(jia)一些(xie)啟發和(he)幫助。

About IT165 -廣告服務 -隱私聲明 -版(ban)權(quan)申明 -免責條(tiao)款 -網站(zhan)地圖 -網友投稿 -聯系方式
本站(zhan)內容來自于互(hu)聯網,僅(jin)供用于網絡(luo)技術學習,學習中請遵循相關法律法規
腾讯分分彩代理官网 | 下一页