在我们分析模型的时候经常会遇到不同类型的事物在某些特性上有共同点,比如,人和公司,他们都有地址,电话,电子邮件等属性,在分析模型的时候,我们可能得出如下的模型:
看到上述的模型的时候,我们是否会觉得模型中的冗余呢?很显然,我们会想如何将这两者融合在一起呢,我们伟大的Martin Fowler同志提出了Party模式来描述此种类型的模型。我们用一种通用(父)的类型来定义人和公司,这样,只需要在模型中指定该通用类型和联系方式的关系即可,而人和公司则从属于该类类型。其模型如下:
在这个时候,大家停下来想一想,第二个模型为什么比第一个模型更好,难道只是模型没有冗余吗?很显然不是。考虑下面的情况,当一个应用中和联系方式相关的实体除了人和公司外,还有团队,子公司,部门等的时候,在第一种模型中,我们应该如何描述呢,很显然第一种模型将会变得很复杂且混乱。而第二种模型,我们可以很容易增加一种或多种和联系方式相关的实体,只是这些实体都是属于Party的。
从上面的例子我们可以看出,使用Party模式会使得类似的模型变得容易扩展。
回过头来我们再看看Party模式:
Problem:
问题是什么呢?问题是当有很多元素拥有相同的特性,或拥有相同责任的时候,我们应该如何去分析和描述它呢?
Solution:
解决方案是,定义一种通用的类型,这些拥有相同责任或特性的元素都从属于这种类型,我们只需要描述该通用类型的责任或特性即可,这里我们将这种通用类型称之为Party(参与者)
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1375229
分享到:
相关推荐
权限中的party和责任模式
Third-Party JavaScript guides web developers through the complete development of a full-featured third-party JavaScript application. You'll learn dozens of techniques for developing widgets that ...
Party Hats
third_party.rar
1.1 Party模式在这一章中,首先我们接触到是是Party模式,在进行系统分析和概念模型设计的时候,经常发现人和各种各样的组织有着同样的行为,例如,固定电话的计费可能是针对个人,也可能是一个单位;需要各种服务...
Blankos Block Party mac版
political_party_animals
19 Game_Party.js
xbox硬盘连接电脑必用软件,可传输所有数据。
CWSS ThirdParty.rar: ACELib XercescLib 相关使用文件;
Arduino-firmata-party.zip,在Firmata和Party上设置Arduino,机器人朋友们固定党,Arduino是一家开源软硬件公司和制造商社区。
1.1 Party模式在这一章中,首先我们接触到是是Party模式,在进行系统分析和概念模型设计的时候,经常发现人和各种各样的组织有着同样的行为,例如,固定电话的计费可能是针对个人,也可能是一个单位;需要各种服务...
ICE ThirdParty-Sources-3.5.1源码
There’s an art to writing third-party JavaScript – embeddable scripts that can plug into any website. They must adapt easily to unknown host environments, coexist with other applications, and manage...
XBOX360硬盘管理(Party Buffalo)+源代码 XBOX360硬盘管理(Party Buffalo)+源代码
Caffe2 Windows third_party(git clone失败或速度慢时可用)
中西方party文化英语PPT学习教案.pptx
3gpp-parlayx-wsdl-Third party call
thirdparty20180525是caffe_windows下安装必须的第三方依赖库
第三方依赖包ThirdParty-Sources-3.5.1.tar.gz,对应Ice3.5.0版本, ICE是一种面向对象的中间件平台。从根本上说,这意味着Ice 为构建面 向对象的客户-服务器应用提供了工具、API 和库支持。Ice 应用适合在异 种环境...