Author :
Anders小明 續(xù)《
Domain Model:業(yè)務(wù)對象的進(jìn)一步設(shè)計》
Product Line Product Line體系存在比較特殊,Product Line的概念并不明顯。Product Line以Product為核心,維護(hù)了一類product所共有的屬性與其它關(guān)聯(lián)業(yè)務(wù)對象如Document,同時維護(hù)了不宜在product一級維護(hù)的信息:product與其它業(yè)務(wù)對象與業(yè)務(wù)邏輯,如與contract的約束關(guān)系。具體如下:
Product Line維護(hù)Product共有的屬性以及關(guān)聯(lián)關(guān)系
1. 維護(hù)product共有的屬性。
這個比較好理解,最類似的是category對象。
2. 維護(hù)product共有的關(guān)聯(lián)關(guān)系。
這個好理解,目的只在一個點(diǎn)維護(hù),避免無謂重復(fù)。
Product Line還維護(hù)不宜在product層次維護(hù)的信息和邏輯(注:并不是很絕對的,通常而言,以下幾種信息和邏輯的維護(hù),在實(shí)際應(yīng)用中都針對product line一級,但在某些業(yè)務(wù)中,還需要維護(hù)特定的product):
1. 維護(hù)product與其Visitor對象的關(guān)聯(lián)關(guān)系。
Product或者Contract總是需要對User是可視的,《分析模式》的10.5.4專門討論了這塊內(nèi)容。由于同類的Product的Visitor是有共性的,同時Visitor和Product關(guān)系并不是那么直接,甚至對于某些項(xiàng)目來說,同一product line下的所有product的可視性都是一致的,因而在product一級上維護(hù)Visitor。
除了單個product的可視性,通常還有product line的search功能。支持Search功能的類型也是在這一級維護(hù)的。
2. 維護(hù)product與其關(guān)聯(lián)對象的約束關(guān)系。
這個是適用于product的定義的用例。當(dāng)product關(guān)系復(fù)雜時需要通過給出一些約束關(guān)系以保證產(chǎn)品的定義的完整性。比如product都有與其關(guān)系document對象,但是document對象又分為多種類型,但對于某類的product需要關(guān)聯(lián)特定三種類型文檔,這種約束關(guān)系就定義在product line對象上。
3. 維護(hù)product與contract的約束關(guān)系。
在復(fù)雜的業(yè)務(wù)中,contract和product的關(guān)系并不是單向的,除了contract將保持對product的引用外,product也會有限定的contract的適用。比如product的結(jié)算的貨幣;現(xiàn)實(shí)的例子是:攜程旅行網(wǎng)的電子機(jī)票只允許電子銀行支付方式;eBay上的某些促銷物品只允許快遞的送貨協(xié)議。當(dāng)然,對于這樣的約束關(guān)系定義product一級還是product line一級是需要根據(jù)項(xiàng)目特點(diǎn)分析的。
4. 維護(hù)product與業(yè)務(wù)流程以及行為的約束關(guān)系。
這是比較少見的,但還是存在。例如對于某種類型的product,不允許在業(yè)務(wù)上做批改動作;對于某類型的產(chǎn)品在業(yè)務(wù)流程上需要預(yù)先填一份業(yè)務(wù)單據(jù)等。相比而言,通常業(yè)務(wù)流程(主要是頁面流)以及業(yè)務(wù)行為和product line關(guān)聯(lián),很少見到和某個具體product關(guān)聯(lián)。
Product Line是所知的最麻煩的領(lǐng)域?qū)ο篌w系,包含了很多邏輯在內(nèi),顯的有點(diǎn)混亂,不過細(xì)想還是有點(diǎn)道理的。