四色模型分析法
四色原型分析模式
- moment-interval
- role
- catalog-entry-like description
- party, place or thing
1.moment-interval archetype(瞬时间隔原型)
这是一个很重要的原型,重要在于时间概念上:某个时刻(moment)或一段很短时间(interval)内. 意味在某个时刻发生的事情因为业务要求或合法性原因需要跟踪;或者过一段时间以后,应该是很短的时间,可以帮助我们寻找到它。
卖东西是在某个时刻发生的,它有发生日期和时间。租赁行为是在一段时间内发生,从开始出租和归还所租物品;预定也是持续一段时间,什么时候预定;什么时候过期等。
这些我们都使用moment-interval原型来表达,UML图如下:
Moment-intervals是和组件模型捆绑在一起,代表了组件模块关注的核心和灵魂,在一个Model中,Moment-intervals经常封装的是最关键的方法,为让其显目,moment-interval的UML图我们使用粉红颜色表示。在代码上用@标识符标识:
/** @archetype moment-interval*/
public class Sale {
public BigDecimal calcTotal(){
}
private int number;
private Date date;
}
在任何领域中,我们都能寻找moment-intervals原型并且开始建模,在原材料资源管理系统中,我们可以这样对待从报价单(RFQ)到购买订单(PO)直至发票,在一个制造管理系统中,我们也就可以将一个计划的过程和步骤分析到实际过程和详细步骤。
原型在帮助指导建模方面一个有效方式是:它能标识那些被包含在Model模型中的类(Classes)以便于区分,原型不只是简化了类的区别;原型还可以区分类的行为职责(responsibilities),例如类的属性,方法等。
2.role archetype(角色原型)
角色原型比较容易理解,任何一个系统都需要人或某个组织介入运行,例如论坛系统需要注册者角色发言;销售订单需要业务员角色制定,等等。
这里有一个Party原型定义:它表示一个可标识、可定位的单元,这个单元有自己正常的状态并且能够自主控制自己的一些行为,通常情况下,人或组织是一种Party,但象护照,身份证等注册性标志等都可以作为Party。
注意,并不是说Party或人或组织就是Role原型,必须Party或人或组织参与一种活动后才为角色,就象张三在电影中表演皇帝,他只有参与电影表演才是皇帝角色;李四在XX公司的角色才是经理,他只有参与这家公司运作才是角色经理;否则他们只是一个Party原型。
所以,Role角色是Party扮演的(a role that a Party plays),Party是角色Role的扮演者(role-player)。
当我们在建模时,对于一个角色扮演者,可以有他自己的核心属性如名称、年龄(以人为例子),也可以有与业务相关的方法,比如一个小店,当店老板去收钱时,他的角色就是收银员(cashier),此时可以将与收银员角色相关业务特点加于其上;当然,同时他也可以是老板(Owner)角色。那么下图中authorizedFor方法就是参与每个角色的行为,当他作为某个角色被授权登录后,与此角色相关的业务特点就应用在他身上。
大家已经注意到了:角色原型在UML中是使用黄颜色标识的。角色模型是第二重要的原型,所以使用黄色。
我们已经知道,Party是一个有自主行为、能够控制自己行为的表示,如人或组织,还有其他没有自主行为的表示,也就是某个地方或位置或某个事情,我们一般称( place, or thing),不但Party可以成为角色,而且 place或thing也可以成为角色,比如,一个商品Product可能又两种角色:在销售过程中商品;正在使用的商品。
3.party, place, or thing archetype
上面我们说过,party place或thing都可以成为角色原型,注意到角色原型中的UML图,party图是以绿色表达。
Party表示有自己正常的状态并且能够自主控制自己的一些行为,通常情况下,人或组织是一种Party,但象护照,身份证等注册性标志等都可以作为Party。
Place or thing表示一样不会说话没有行为的东西,例如商品,当然这个商品可以扮演不同角色,既可以是零售的一个电源插座;也可以批发系统中的一个电源插座,它是被卖的,可能在不同业务系统被卖的方式不一样。
4.description archetype
种类description原型其实是第三重要的原型,一般情况下,它类似目录级别catalog-entry-like的种类,例如某个商品电源插座属于家用电器这个种类,当然家用电器又属于电器这个目录,是一个树形的目录结构。例如论坛中帖子和回帖之间也是一种种类原型。
比如你的红色福克斯是福特生产的一辆轿车,它有车牌号、购买日期、颜色和里程表等,这些代表Thing原型,那么作为轿车这个种类来说,它有一些种类属性,例如:生产厂家、生产批号、适用颜色等,这些属性是轿车这类所有车辆都共有的。
在设计模式这个实现级别,我们通常使用组合模式来实现种类原型。
Description原型在UML中使用蓝色表达。
5.四色原型图
每个原型图有属性和连接(关联 依赖等关系)两个部分组成。
用一句话来概括四色原型就是:一个什么什么样的人或组织或物品以某种角色在某个时刻或某段时间内参与某个活动。 其中“什么什么样的”就是DESC,“人或组织或物品”就是PPT,“角色”就是Role,而”某个时刻或某段时间内的某个活动"就是MI。
转自:https://www.jdon.com/mda/archetypes.html
参考链接:
http://www.step-10.com/notes/index.html
http://www.devshed.com/c/a/Practices/Design-with-ArgoUML/6/
Observations on the DNC(David Anderson)