天天看點

Domain Model:業務對象的進一步設計2

Author :  Anders小明

   續《 Domain Model:業務對象的進一步設計》

    Product Line

    Product Line體系存在比較特殊,Product Line的概念并不明顯。Product Line以Product為核心,維護了一類product所共有的屬性與其它關聯業務對象如Document,同時維護了不宜在product一級維護的資訊:product與其它業務對象與業務邏輯,如與contract的限制關系。具體如下:

    Product Line維護Product共有的屬性以及關聯關系 

   1.     維護product共有的屬性。

這個比較好了解,最類似的是category對象。 

   2.     維護product共有的關聯關系。

這個好了解,目的隻在一個點維護,避免無謂重複。 

   Product Line還維護不宜在product層次維護的資訊和邏輯(注:并不是很絕對的,通常而言,以下幾種資訊和邏輯的維護,在實際應用中都針對product line一級,但在某些業務中,還需要維護特定的product): 

   1.       維護product與其Visitor對象的關聯關系。 

   Product或者Contract總是需要對User是可視的,《分析模式》的10.5.4專門讨論了這塊内容。由于同類的Product的Visitor是有共性的,同時Visitor和Product關系并不是那麼直接,甚至對于某些項目來說,同一product line下的所有product的可視性都是一緻的,因而在product一級上維護Visitor。 

   除了單個product的可視性,通常還有product line的search功能。支援Search功能的類型也是在這一級維護的。 

   2.       維護product與其關聯對象的限制關系。 

   這個是适用于product的定義的用例。當product關系複雜時需要通過給出一些限制關系以保證産品的定義的完整性。比如product都有與其關系document對象,但是document對象又分為多種類型,但對于某類的product需要關聯特定三種類型文檔,這種限制關系就定義在product line對象上。 

   3.       維護product與contract的限制關系。 

   在複雜的業務中,contract和product的關系并不是單向的,除了contract将保持對product的引用外,product也會有限定的contract的适用。比如product的結算的貨币;現實的例子是:攜程旅行網的電子機票隻允許電子銀行支付方式;eBay上的某些促銷物品隻允許快遞的送貨協定。當然,對于這樣的限制關系定義product一級還是product line一級是需要根據項目特點分析的。 

   4.       維護product與業務流程以及行為的限制關系。 

   這是比較少見的,但還是存在。例如對于某種類型的product,不允許在業務上做批改動作;對于某類型的産品在業務流程上需要預先填一份業務單據等。相比而言,通常業務流程(主要是頁面流)以及業務行為和product line關聯,很少見到和某個具體product關聯。 

   Product Line是所知的最麻煩的領域對象體系,包含了很多邏輯在内,顯的有點混亂,不過細想還是有點道理的。

繼續閱讀