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是所知的最麻烦的领域对象体系,包含了很多逻辑在内,显的有点混乱,不过细想还是有点道理的。
分享到:
相关推荐
Domain model manual 324
领域模型XText Domainmodel示例(按发行版)
领域驱动设计模式 参考 Vaughn Vernon @ 和他的 DDD 书 1分类 与 DDD 相关的以下模式形成执行框架,通过它: 外部世界与领域模型通信 聚合结构内部通信 上游域上下文执行 saga 和场景 领域事件传播和重放 1.1带有 ...
lec-5 领域模型 DomainModel.ppt
Here we have to note that *full-training* protocol, which is taking all the samples from one domain as the source or target domain, and *dowm-sample* protocol, which is choosing 20 or 8 samples per ...
Wavelet Transform Domain Filters
leasingninja-java-boundedcontexts-domainmodel Java中具有DDD样式的LeasingNinja限制了上下文和域模型。 Spring WebMVC中的UI。 如果您尚未访问leasingninja.io,请立即访问,这是进一步介绍的内容。 在Java中,...
而且,我们会看到通过DomainModel建模的一些对象模拟了业务活动中的数据,有的对象还反映了一些业务规则。 我们就来看看电子商务系统的开发,在开发中我们建立了一些概念的模型来反映电子商务领域中的一些概念:...
关于DDD可参考InfoQ的Mini Book Domain Driven Design Quickly , 还有 Banq 的文章 实战DDD(Domain-Driven Design领域驱动设计), 和 领域模型驱动设计(DDD)之模型提炼 。 本书分为四部分,第一部分讲述了领域模型...
Domain-Driven Design领域驱动设计 Domain-Driven Design领域驱动设计
Domain Generalization A Survey.pdf
python库。资源全名:domainmodel-0.12.tar.gz
python库。 资源全名:domainmodel-0.2-py2.4.egg
用于两个domain对象的拷贝,支持字段自动覆盖,选择性覆盖,选择性字段拷贝,作用:当你有多个domain对象都需要生成另外的同一个domain对象的时候这个方法就很有用了,或许存在BUG,欢迎指出
2014 Deep Domain Confusion_ Maximizing for Domain Invariance.pdf
Models is that the definition of a domain model and rules for its integrity can be configured by domain experts external to the execution of the program. These systems are important when flexibility ...
摘要本文通过由ActiveRecord模式到DataMapper模式(使用工厂方法)再到DataMapper模式(使用MapperRegistry)的一系列重构,探讨模式背后隐藏的思想和面向对象设计原则。本系列的要点是:重要的不是如何做,而是为什么做...
Domain Generalization A Survey.zip