Domain Model:业务对象的进一步设计2

王朝other·作者佚名  2006-10-26
窄屏简体版  字體: |||超大  

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是所知的最麻烦的领域对象体系,包含了很多逻辑在内,显的有点混乱,不过细想还是有点道理的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航