DDD的前世今生

“領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)”(以下簡(jiǎn)稱(chēng)“DDD”)號(hào)稱(chēng)“OO done right", 也就是”面向?qū)ο蠓椒▽W(xué)的正確實(shí)施方式“。自2003年提出以來(lái),雖然在一些軟件開(kāi)發(fā)專(zhuān)家的圈子里得到盛贊,然而真實(shí)的企業(yè)級(jí)應(yīng)用中卻是曲高和寡。十幾年過(guò)去了,這兩年DDD卻又重新成了軟件開(kāi)發(fā)方法學(xué)的熱點(diǎn)。當(dāng)和朋友們聊起這一有趣的現(xiàn)象時(shí),常常會(huì)碰到以下幾個(gè)問(wèn)題:

1. 既然有了面向?qū)ο蠓椒▽W(xué),為什么還需要DDD?

2. DDD既然得到這么多專(zhuān)家的稱(chēng)贊,為什么自從2003年出現(xiàn)以來(lái)一直沒(méi)有真正流行起來(lái)?

3. DDD在這兩年為什么又成了熱點(diǎn)?

4. DDD的未來(lái)會(huì)是怎樣的?


一切都要從布魯斯老爺子的人月神話(huà)說(shuō)起。書(shū)中有兩個(gè)互相關(guān)聯(lián)的觀點(diǎn),和本文的觀點(diǎn)有關(guān)。一是書(shū)中認(rèn)為把業(yè)務(wù)知識(shí)搞清,是最困難的,而不是如何把這些知識(shí)表達(dá)出來(lái)。二是有關(guān)軟件的本質(zhì)困難和非本質(zhì)困難。軟件的本質(zhì)困難指的是軟件本身的復(fù)雜性。非本質(zhì)困難,指的是具體的工具和技術(shù)。非本職復(fù)雜性是可以通過(guò)技術(shù)的改進(jìn)本身逐漸消除的。本質(zhì)復(fù)雜性是無(wú)法消除的,只能控制。綜合起來(lái),我們可以認(rèn)為,業(yè)務(wù)領(lǐng)域本身的復(fù)雜性,是軟件本職復(fù)雜性的重要組成部分。幾十年來(lái),軟件開(kāi)發(fā)。方法學(xué)的發(fā)展,可以說(shuō),就是逐漸控制軟件的本質(zhì)復(fù)雜性。如何應(yīng)對(duì)軟件的本質(zhì)復(fù)雜性,以及如何消除非本質(zhì)復(fù)雜性的過(guò)程。下面重點(diǎn)談一下,如何,管理和控制業(yè)務(wù)領(lǐng)域本身的復(fù)雜性。

這里所說(shuō)的管理指的是,使一件復(fù)雜的事情,變得可以控制和預(yù)測(cè)和可行,而不致因?yàn)槭Э囟鴮?dǎo)致失敗。

首先人們?cè)?0年代提出了軟件工程。軟件工程早期的重要成果是結(jié)構(gòu)化軟件開(kāi)發(fā)方法學(xué)。在套體系下,我們是怎樣對(duì)領(lǐng)域進(jìn)行建模的呢?人們用數(shù)據(jù)流圖,來(lái)建模行為以及信息變化的關(guān)系。另一方面,利用實(shí)體聯(lián)系圖建模數(shù)據(jù)庫(kù)。這種方法最大的問(wèn)題在于,以上兩種方法沒(méi)有進(jìn)行有效的聯(lián)系。也就是說(shuō),從動(dòng)態(tài)和靜態(tài)兩方面去分析業(yè)務(wù)領(lǐng)域本身沒(méi)有問(wèn)題,問(wèn)題在于兩者之間沒(méi)有有機(jī)的聯(lián)系,沒(méi)有達(dá)成一致,這種內(nèi)在的不一致性造成開(kāi)發(fā)的困難。這一方法學(xué)另外一個(gè)問(wèn)題在于,沒(méi)有一個(gè)自然的方法,從分析過(guò)渡到設(shè)計(jì)。以下是一個(gè)例子。

當(dāng)人們逐漸意識(shí)到這些問(wèn)題的時(shí)候,面向?qū)ο蟮姆椒ň蛻?yīng)運(yùn)而生了。通過(guò)對(duì)象,將,靜態(tài)的屬性和動(dòng)態(tài)的行為,結(jié)合起來(lái)。僅從靜態(tài)的角度來(lái)看,面向?qū)ο蟮慕?,比?shí)體聯(lián)系圖更強(qiáng)大,更有表現(xiàn)力,更容易深挖,領(lǐng)域知識(shí)。其動(dòng)態(tài)的一面,借由,順序圖,用力等方法。將動(dòng)靜結(jié)合起來(lái)。此外,面向?qū)ο蟮姆治鲈O(shè)計(jì)采用同樣的表達(dá)方法。面向?qū)ο蟮脑O(shè)計(jì)結(jié)果,又可以自然的,演化成數(shù)據(jù)庫(kù)和程序。面向?qū)ο笳Z(yǔ)言寫(xiě)的程序。從而系統(tǒng)地解決了,結(jié)構(gòu)化方法中的相應(yīng)的缺失。以下是一個(gè)例子。

到90年代中期,自由uml產(chǎn)生以來(lái),面向?qū)ο笞呦蛄艘粋€(gè)巔峰。在某些領(lǐng)域取得了輝煌的成功。比如說(shuō)編程語(yǔ)言。和圖形應(yīng)用界面。然而在企業(yè)應(yīng)用方面卻沒(méi)有,真正普及。盡管早期,面向?qū)ο蟠髱焸?,索取的例子中,多?shù)都是企業(yè)應(yīng)用的例子.這也就為領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的出現(xiàn)埋下了伏筆。在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)正式出場(chǎng),以前,我們先分析一下,面向?qū)ο螅瑸槭裁礇](méi)有在企業(yè)應(yīng)用中取得成功?主要問(wèn)題仍然在于業(yè)務(wù)領(lǐng)域的復(fù)雜性。

讓我們假想,如果那些面向?qū)ο蟮拇髱焸?,?lái)到我們自己的企業(yè),幫我們編寫(xiě)程序。很可能可以成功,但是我們自己做就不行。這說(shuō)明什么?那些大師心中,必然有一些他們知道而我們不知道的東西。可惜,他們沒(méi)有把這些內(nèi)容充分的,系統(tǒng)化,并,整理成書(shū)。而領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),就把那些大師心中的不傳之秘。系統(tǒng)地總結(jié)出來(lái),總結(jié)出了各種,方法原則和技術(shù)。寫(xiě)在書(shū)里面,我們一般的人,按圖索驥,一葫蘆畫(huà)瓢,也可以應(yīng)對(duì)復(fù)雜的,有系統(tǒng)。

也就是說(shuō),領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)系統(tǒng)的解決了,傳統(tǒng)面向?qū)ο蠓椒ǖ娜笔А?/p>

由于,業(yè)務(wù)領(lǐng)域的復(fù)雜性。為了構(gòu)建深刻的準(zhǔn)確的領(lǐng)域模型。需要在傳統(tǒng)的,面向?qū)ο蠓椒ɑA(chǔ)上,更多的,方法和原則。比如說(shuō),領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中引入的,聚合。實(shí)體,值對(duì)象。限界上下文等等。在早期,面向?qū)ο蟠髱焸?,自己的工作中,他們或多或少的,使用了這些思想,但是,沒(méi)有系統(tǒng)的完整總結(jié)下來(lái)。直到領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)。下面舉例子。

另一方面,傳統(tǒng)軟件開(kāi)發(fā)方法,僅僅提供了一套建模方法。而僅僅是,建模方法本身,是不足以分析復(fù)雜的領(lǐng)域的。缺乏了協(xié)作這一環(huán)。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)非常強(qiáng)調(diào)領(lǐng)域?qū)<液烷_(kāi)發(fā)人員的協(xié)作。這是產(chǎn)生好的領(lǐng)域模型的必要條件。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)一再?gòu)?qiáng)調(diào)這一點(diǎn),并且提出了統(tǒng)一語(yǔ)言等等方法。明白這一點(diǎn),我們就知道為什么面向?qū)ο蠓椒ㄔ诰幊陶Z(yǔ)言,和圖形化用戶(hù)界面能夠取得成功,而在企業(yè)應(yīng)用方面不行了.在編程語(yǔ)言和圖形化用戶(hù)界面的開(kāi)發(fā)方面??梢哉f(shuō)開(kāi)發(fā)人員自己就是領(lǐng)域?qū)<?。因此不需要和非IT背景的專(zhuān)家協(xié)作,就能夠把領(lǐng)域搞清楚,哪怕這個(gè)領(lǐng)域非常復(fù)雜。而在企業(yè)應(yīng)用方面這一點(diǎn)不成立。所以重要的不是模型本身多復(fù)雜,而是,如何,與,對(duì)的人協(xié)作,獲得這一模型。

領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),提供了層次性的架構(gòu)。在martin fowler總結(jié)了層次型架構(gòu)之后。

盡管領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)具有突破性的價(jià)值。但是我們一定要注意,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是建立在面向?qū)ο蟮膱?jiān)實(shí)基礎(chǔ)之上的,是對(duì)面向?qū)ο蠓椒ǖ睦^承和發(fā)展。脫離面向?qū)ο蟮姆椒?,是無(wú)法成功運(yùn)用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的。

然而遺憾的是。自從領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在2003年產(chǎn)生以來(lái),盡管在小范圍內(nèi)受到了專(zhuān)家們的贊譽(yù)。但是,仍然沒(méi)有真正普及開(kāi)來(lái)。那么問(wèn)題又出在哪兒呢?

首先,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)并沒(méi)有解決,人月神話(huà)所提出的全部本質(zhì)復(fù)雜性問(wèn)題。

首先如書(shū)中所認(rèn)為的對(duì)于復(fù)雜的領(lǐng)域,要獲得一個(gè)。深刻的有效的模型,是不可能一蹴而就的。必須經(jīng)過(guò),領(lǐng)域?qū)<液虸T專(zhuān)家的協(xié)作不斷演化,才能得到。而領(lǐng)域模型的演化,必然導(dǎo)致程序本身的演化,并且,領(lǐng)域模型的重要的變更將導(dǎo)致軟件系統(tǒng)的架構(gòu)意義上的變革。也就是說(shuō),系統(tǒng)必須具有,不斷的演進(jìn)自身架構(gòu)的能力這一點(diǎn)在傳統(tǒng)軟件開(kāi)發(fā)中幾乎是不可能的,而領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)本身,并沒(méi)有,給出有效的解決辦法。

另一方面,盡管書(shū)中強(qiáng)調(diào)了,領(lǐng)域人員和技術(shù)人員的充分協(xié)作,并提出了一些方法,但是,仍然缺乏全面的,行之有效的,一套系統(tǒng)的方法,達(dá)成協(xié)作。

此外并沒(méi)有完全解決軟件本身復(fù)雜性。透明性和可變性。

軟件的不透明性,也要求有一套行之有效的方法,去驗(yàn)證,系統(tǒng)的正確性。頂一驅(qū)動(dòng)設(shè)計(jì),同樣沒(méi)有提出,行之有效的方法。

此外,我們也不能不提一下,面向?qū)ο蠹夹g(shù)應(yīng)用于,企業(yè)應(yīng)用,所走過(guò)的長(zhǎng)達(dá)十幾年的一段彎路。

領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)出版在2003年,在這一年,SUN公司,發(fā)表了J2EE1.4。這是J2EE的最后一個(gè)版本。而這一,框架的最初版本,則要追溯到1999年底的J2EE1.2.三年后作了重大修正并重新命名為JavaEE5的版本則是后話(huà)了。J2EE目的就是企業(yè)應(yīng)用市場(chǎng)。當(dāng)年J2EE是如此的雄心勃勃。除了微軟以外,各大公司,都對(duì)其抱以厚望,紛紛追捧。既然IT巨頭們都表態(tài)了,業(yè)界的程序員們當(dāng)然趨之若鶩。然而J2EE有重大缺陷。其封裝領(lǐng)域邏輯的核心機(jī)制是EJB。而早期的EJB有兩個(gè)重大缺陷一是不支持繼承,因而無(wú)法充分發(fā)揮面向?qū)ο?,建模的威力其編程模式事?shí)上是面向過(guò)程。另一方面,這一框架侵入性非常強(qiáng),技術(shù)復(fù)雜,從而使程序員,要花很大的精力,研究技術(shù)細(xì)節(jié)本身。那時(shí)的程序員,以為花大量時(shí)間,掌握了EJB的,技術(shù),就能夠順利的開(kāi)發(fā),企業(yè)應(yīng)用了。 然而,這正是,大家把大量精力,花在了,人月神話(huà)所說(shuō)的非本質(zhì)復(fù)雜性上,而忽略了真正的,本質(zhì)復(fù)雜性。 這是EJB失敗的根本原因。但當(dāng)時(shí)多數(shù)人并沒(méi)有意識(shí)到這一點(diǎn)。微軟則推出了,DNA與之抗衡。同樣要關(guān)注技術(shù)細(xì)節(jié).同樣有類(lèi)似的問(wèn)題。這一狀態(tài)被spring框架徹底解決了。然而spring產(chǎn)生的時(shí)候,已經(jīng)沒(méi)有多少程序員,真的關(guān)心面向?qū)ο?。以面向過(guò)程的方式開(kāi)發(fā)企業(yè)應(yīng)用已經(jīng)成為常態(tài)。盡管spring已經(jīng)具有使人們擺脫技術(shù)細(xì)節(jié),把精力放在領(lǐng)域模型上的潛力。然而并沒(méi)有明確的提出來(lái)強(qiáng)大的慣性,那是人們?cè)阱e(cuò)誤的道路上越走越遠(yuǎn).大家還記得幾年前,市面上大量的ssh的書(shū)吧。這些書(shū)講的都是三個(gè)框架,本身,如何,操作,卻只字未提,領(lǐng)域模型的建立.仿佛人們,學(xué)會(huì)了三個(gè)框架的技術(shù)細(xì)節(jié),就可以開(kāi)發(fā)好企業(yè)應(yīng)用了。盡管Spring提供了實(shí)現(xiàn)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的潛在能力,但是,仍然,沒(méi)有使人在錯(cuò)誤的道路上。那個(gè)時(shí)候Martin Fowler提出了POLO,隱含的,說(shuō)明了,創(chuàng)建領(lǐng)域模型的重要性。然而理解的人并不多,老爺子說(shuō)的也不明確。這樣一耽誤就是十幾年。90年代中期面向?qū)ο蠓椒▽W(xué)的大好形勢(shì),煙消云散了。在企業(yè)應(yīng)用的場(chǎng)合下人們退回到了,面向過(guò)程的開(kāi)發(fā)方法。諷刺的是,人們使用的是java c#這樣的面向?qū)ο笳Z(yǔ)言。 然而這一行勢(shì)必將改觀。近年來(lái),面向?qū)ο蠓椒▽W(xué),正在以領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的面貌,重新回歸大眾視野,那么,為什么,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在沉寂了十幾年之后,又能夠好起來(lái)呢。

有一些,科學(xué)或者技術(shù),在剛剛產(chǎn)生的時(shí)候,未必能夠引起人們廣泛的注意,直到各方面條件,內(nèi)外因素具備之后。風(fēng)云際會(huì),才崛起。比如說(shuō),這兩年,十分熱門(mén)的深度學(xué)習(xí),其理論基礎(chǔ),早在幾十年前就已經(jīng)成熟了,盡管,近年來(lái)也不乏,技術(shù)方面的創(chuàng)新,但是,在理論上并沒(méi)有真正,突破意義的進(jìn)展。而之所以能夠熱起來(lái),并在實(shí)踐中,產(chǎn)生,真正有意義的結(jié)果。在于軟硬件,方面的發(fā)展,提供了,足夠的,計(jì)算能力。容易使用的語(yǔ)言和框架。

而領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的復(fù)興,則來(lái)源于以下幾個(gè)因素。其首要原因首推敏捷軟件開(kāi)發(fā)。

上文說(shuō)過(guò),領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)原書(shū)中,并沒(méi)有對(duì)架構(gòu)演化的能力,提出,行之有效的,辦法,而這正是,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),得以成功的前提。敏捷軟件開(kāi)發(fā),的各項(xiàng)實(shí)踐,恰好解決這一問(wèn)題。典型的包括,測(cè)試驅(qū)動(dòng)開(kāi)發(fā),持續(xù)交付,重構(gòu)浮現(xiàn)式設(shè)計(jì),眼鏡是架構(gòu)等等。也包括管理方面,基于迭代和看板的開(kāi)發(fā)。

第二前文提到,對(duì)于,領(lǐng)域,專(zhuān)家和,開(kāi)發(fā)人員的協(xié)作。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),也沒(méi)有提出一套完整的體系。而敏捷軟件開(kāi)發(fā),最重要的,就是打破,部門(mén)之間的,壁壘。促進(jìn)各種角色的協(xié)作。全功能團(tuán)隊(duì)?,F(xiàn)場(chǎng)客戶(hù)。敏捷計(jì)劃會(huì)議,需求梳理,迭代評(píng)審評(píng)審會(huì)議。等等實(shí)踐,為領(lǐng)域?qū)<?,和開(kāi)發(fā)團(tuán)隊(duì)的,協(xié)作,提供了,一套行之有效的,方法體系。進(jìn)而形成了高效協(xié)作的文化。用戶(hù)地圖。以及,去年剛剛產(chǎn)生的,事件風(fēng)暴。責(zé)備,領(lǐng)域?qū)<液蛨F(tuán)隊(duì)的協(xié)作提供了具體的形式。

第三則是微服務(wù)架構(gòu),要求。微服務(wù),設(shè)計(jì)的一個(gè)重要方面在于如何劃分服務(wù)。這絕不像表面上看來(lái)這么容易。而另一驅(qū)動(dòng)設(shè)計(jì)中的限界上下文,對(duì)這一問(wèn)題,提供了,理論基礎(chǔ)。

第四,像spring jpa等技術(shù)框架。以及,ruby on rails等等,以及后來(lái)出現(xiàn)的層出不窮的技術(shù)框架。是開(kāi)發(fā)人員,從技術(shù)框架的細(xì)節(jié)中解放出來(lái),可以將更多的精力投入到領(lǐng)域本身的,分析,和研究。

第五些,新的方法,新的技術(shù),如cos。整潔架構(gòu)。六邊形架構(gòu)。對(duì)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)原先提出的技術(shù)進(jìn)行了補(bǔ)充。

第五點(diǎn),數(shù)字化轉(zhuǎn)型的需求,各種老舊的項(xiàng)目,不能適應(yīng)新的變化。

前兩點(diǎn)解決了,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的內(nèi)在問(wèn)題,第三點(diǎn),則是,外在的迫切需求。第四點(diǎn)提供了,外在的技術(shù)支持。這些促成了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),這兩年重新回到大眾的視野。

厘清涉及未來(lái)會(huì)怎么樣呢?我認(rèn)為,由于各方面條件,已經(jīng)具備,另一方面,由于瀝青的設(shè)計(jì),需要解決的問(wèn)題本身就是復(fù)雜的,因此,也不會(huì)特別快地普及。結(jié)論是。林青的設(shè)計(jì),會(huì)逐漸穩(wěn)健的的,在企業(yè)應(yīng)用,中,普及開(kāi)來(lái)。

最后,提出兩個(gè)在,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)普及中要注意的問(wèn)題。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是建立在面向?qū)ο蠓椒▽W(xué)的,基礎(chǔ)之上的。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中,提出了,傳統(tǒng)驗(yàn)證方法,學(xué)中,所缺失的部分,但是并沒(méi)有重復(fù),面向?qū)ο蠓椒ㄖ?,已?jīng)解決的內(nèi)容。也就是面向?qū)ο?,方法的,建模的基本方法和技能。因此如果讀者,僅僅閱讀了,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)方面的書(shū),而沒(méi)有掌握面向?qū)ο蟮幕A(chǔ),則不可能將另行設(shè)計(jì),真正在實(shí)踐中用好。所以必須注重對(duì)面向?qū)ο?,本身的掌握。這里推薦幾本書(shū)?一個(gè)是不實(shí)的,面向?qū)ο蠓治龊驮O(shè)計(jì)。20浪漫的,因?yàn)槊婺な菓?yīng)用。三是,標(biāo)靶c馬婷的,敏捷軟件開(kāi)發(fā)。48天,瘋了,因?yàn)闆](méi)有清脆。 其他的書(shū)大家可以選圖。

第二點(diǎn)是,用戶(hù),體驗(yàn)地圖以及時(shí)間風(fēng)暴,對(duì)于,了解業(yè)務(wù)流程。識(shí)別出,領(lǐng)域事件,聚合,等等還有用處。但對(duì)于,和,離專(zhuān)家一起,研究出,準(zhǔn)確的,豐富的,深刻的,離模型,仍然是不足的。這一點(diǎn)本來(lái)是,因?yàn)槊畹拈L(zhǎng)項(xiàng),但是對(duì)于領(lǐng)域?qū)<襾?lái)說(shuō),六安苗師傅似乎不夠親切。目前,我的想法是,江陰文廟最核心的部分抽取出來(lái),以簡(jiǎn)潔的方式,在,領(lǐng)域?qū)<?,與開(kāi)發(fā)人員的協(xié)作中,逐漸的,是另一專(zhuān)家掌握。注意方法,需要在實(shí)踐中,逐步嘗試。

最后,我懷著激動(dòng)的心情,想,明天對(duì)象,早期的前輩和大師們致敬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,300評(píng)論 25 708
  • 10月有幸參加ThoughtWorks組織的《領(lǐng)域驅(qū)動(dòng)的微服務(wù)架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)工作坊》培訓(xùn)課程,盡管課程時(shí)間只有短短一...
    李戩plutocracy閱讀 7,302評(píng)論 4 36
  • 獨(dú)孤,是情人的眼眸 走到每一處,都覺(jué)得缺失了什么。 文字是最累人的 像隔靴,搔癢。 崗吉餐廳的落日一直懸掛 飄動(dòng)的...
    寧聞閱讀 404評(píng)論 0 0
  • 關(guān)于GCD網(wǎng)上很多介紹, 大部分人都很熟悉, 這里只是本人學(xué)習(xí)的一個(gè)總結(jié), 不到之處,還請(qǐng)指正. 一. 準(zhǔn)備 在這...
    流火緋瞳閱讀 535評(píng)論 0 3
  • 今天威少50+16+10的數(shù)據(jù)再次拿到三雙,這也是威少個(gè)人單賽季第42次三雙,并打破了由奧斯卡-羅伯森創(chuàng)造的三雙紀(jì)...
    文案館閱讀 381評(píng)論 0 0

友情鏈接更多精彩內(nèi)容