4.1 重新學(xué)習(xí)UML

當(dāng)前現(xiàn)狀
? ?有很多人工作了很長時(shí)間,卻對UML還不了解。還有很多人認(rèn)為UML只是面試需要考察的技能,工作中完全用不到。?
? ?多態(tài)、繼承、封裝、UML、SOLID設(shè)計(jì)原則是很多面試所考察的能力點(diǎn),他們背后所代表的不是這些概念有沒有了解,實(shí)際上掌握這些技能才是做好建模的必要條件,作為一個(gè)優(yōu)秀的架構(gòu)師來說,技術(shù)框架、開發(fā)語言只能算是技術(shù)面的維度,真正優(yōu)秀的架構(gòu)師需要有非常扎實(shí)的模型設(shè)計(jì)能力,從軟件設(shè)計(jì)角度來說,掌握多態(tài)、繼承、封裝、UML、SOLID設(shè)計(jì)原則的價(jià)值是遠(yuǎn)大于掌握更多技術(shù)框架的價(jià)值的。
學(xué)習(xí)UML
? UML(Unified Modeling Language)是一種建模標(biāo)準(zhǔn)語言,主要用于建模和建模交流,UML體現(xiàn)了類與類之間的關(guān)系。
類與類之間的關(guān)系總分為六種關(guān)系:
依賴(Dependency):
? ?依賴是一種使用的關(guān)系,即一個(gè)類的實(shí)現(xiàn)需要另一個(gè)類的協(xié)助,所以說,依賴是一種比較弱的關(guān)系,表現(xiàn)在類圖中的是帶箭頭的虛線。

關(guān)聯(lián)(Association):
? ? 關(guān)聯(lián)是類與類之間最常用的一種關(guān)系,通常情況下如果兩個(gè)類之間有連線,那么這兩個(gè)類之間的關(guān)系一般就是關(guān)聯(lián)。關(guān)聯(lián)可以是單向的,也可以是雙向的,單向的關(guān)聯(lián)使用帶箭頭的實(shí)線表示,雙向的關(guān)聯(lián)使用不帶箭頭的實(shí)線表示。

組合(Composition):
? ?組合是一種強(qiáng)的擁有的關(guān)系,體現(xiàn)了嚴(yán)格的部分和整體的關(guān)系,部分和整體的生命周期是一樣的。在UML圖中,組合通常用一個(gè)帶實(shí)心菱形的直線來表示。

聚合(Aggregation):
? ?聚合是一種弱的'擁有'關(guān)系,體現(xiàn)的是A對象可以包含B對象,但B不是A對象的一部分。聚合關(guān)系是用空心的菱形線表示的。

泛化(Generalization):
? ?泛化關(guān)系是一種繼承關(guān)系,表示一般與特殊的關(guān)系,或者說是父子關(guān)系。在UML圖中,泛化關(guān)系用帶箭頭的實(shí)線表示,箭頭從子類指向父類。

實(shí)現(xiàn)(Realization):
? ?實(shí)現(xiàn)關(guān)系是一種類與接口的關(guān)系,表示類是接口所有特性的具體實(shí)現(xiàn)。在UML中,實(shí)現(xiàn)關(guān)系通常通過一條帶箭頭的虛線表示,箭頭從實(shí)現(xiàn)類指向接口。

六種關(guān)系中,從弱到強(qiáng)依次是:
依賴關(guān)系 < 關(guān)聯(lián)關(guān)系 < 聚合關(guān)系 < 組合關(guān)系 < 實(shí)現(xiàn)關(guān)系 = 泛化關(guān)系
UML的作用
? ?UML是表現(xiàn)類關(guān)系的一種約定標(biāo)準(zhǔn)方式,是建模的統(tǒng)一標(biāo)準(zhǔn)語言,采用UML是為了方便大家可以更好的理解與交流模型。
UML便于團(tuán)隊(duì)交流協(xié)作
在實(shí)際工作中,我們可能直接用UML圖來交流模型,同時(shí)也會直接談?lì)惻c類的關(guān)系,通過大家對于統(tǒng)一的建模標(biāo)準(zhǔn)的理解,可以更好的理解模型設(shè)計(jì)。
UML可視化便于模型優(yōu)化
如果沒有UML可視化呈現(xiàn)模型的樣子,設(shè)計(jì)者就很難對業(yè)務(wù)模型的抽象去思考設(shè)計(jì),也很難對現(xiàn)有的業(yè)務(wù)模型做優(yōu)化設(shè)計(jì),因此通過UML可視化才可以讓我們更好的做模型設(shè)計(jì)的工作。
總結(jié)
? ?UML設(shè)計(jì)是模型設(shè)計(jì)的規(guī)則標(biāo)準(zhǔn),我們不能淺顯的理解UML只是學(xué)校里考試需要掌握的知識點(diǎn),UML也不是只是在面試時(shí)才用到的技術(shù)儲備,UML應(yīng)該是作為模型設(shè)計(jì)者所必需要掌握的技能。其實(shí)所謂的建模設(shè)計(jì),其實(shí)就是在畫UML圖。