《分析模式》笔记之责任模式与合同模式
关键字: 面向对象将两个模式放在一起是因为无论是role还是product:
不仅仅是体现了OO的SRC原则,当一部分逻辑够复杂时,就分离出去成为新层次。
而且在于,我认为在一些情况下,责任模式是合同模式的一个特例。
第一个是责任模式。
也许更应该陈作party模式。在这个章节中,详细讨论了party,hierachy,以及与party相关联的概念,包括address,责任。
在party模式中,一个party的责任是由他所在hierarchy和role构成的。
同时责任又被具体化为操作范围:由一些term(借用了合同一章中的term)或者一系列term组成的。
如同观测和测量模式一样,这些term也分定性的和定量的。不过martin没有深入讨论责任的子类型化。
最后一系列的责任映射到Role,正如我们习惯和熟悉了的那样:
一个role包含了相关的一系列操作范围,从外部看,我们看到了一个完整的概念。
第二个是合同模式(包括合同,派生合同等3个章节)
讨论了:合同和产品关系(产品模型是如何被建立的),场景模型建立意图,合同(产品)的子类型化问题以及合同的外观问题。
合同的概念包括:场景,产品和团体。
场景的概念相当于rule engine中的fact,是一系列事实的集合。
产品模式来自于:The product/contract split should be used whenever the customer sees a single deal that is broken int servral deals by the trader.
我以为这个contract和product的关系,与party和role的关系很类似。
表面上看前者是include的关系,而后者不是,更多的,role修饰了party。
然而他们还是有些类似:
1. 首先product和role都可以独立于contract和party之外独立发展(废话一句:))
2. product本身是抽象的,并非代表一个现实世界的实物(还是废话一句)。。
考虑金融市场下的,一个金融产品来说,金融产品是虚拟的,它本身就是一个合同,包含了一系列的操作范围--责任。
注意在这个情况下:一个product包含了一系列的操作范围--责任,从外部看,也呈现了一个完整的概念。而这与role的结构是很像的。
虽然contract和product很自然的看成是include的关系,然而由于product本身是个完整的概念,
使得我们可以反过来看,product修饰了contract。
一个保单包含了不同的party,而保单中的保险产品修饰了保单--描述了不同party的责任关系。
(在强迫自己把两个本来"不大关系"的东东看成一致后:))
party中的责任模型中role相对静态,即role建立后其操作范围基本不变了。
而contract中的prodcut则是一个动态的概念:
即虽然product在定义层面已经规定了大量的责任关系(操作范围),当这些product被包含到contract中,通常会被参数化(子类型化),
当然也有没有被参数化的情况,可以看作一个特列。
发表评论
- 浏览: 65896 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
NEWS: Microsoft DSL Tool ...
这不就是Ruby,或者更确切的说,Groovy嘛
-- by halfmile -
从EAI到SOA
wwwtom 写道呵呵,前几天还看有人说 esb上架构SOA是有害的,今天就看见 ...
-- by richmond -
从EAI到SOA
呵呵,前几天还看有人说 esb上架构SOA是有害的,今天就看见有人跑出来说 “E ...
-- by wwwtom -
从EAI到SOA
现在的soa门槛太高 入门比较困难 要了解 soap wsdl 等乱七八糟的东东 ...
-- by xly_971223 -
从EAI到SOA
很多人还以为SOA只是概念炒作,其实,国内外大多数主流厂商都已经推出SOA概念的 ...
-- by JavaInActoin






评论排行榜