关于GOF的“设计模式”中的 UML描述

timmego 2006-02-16 12:46:34
我学UML不是很久,看GOF的“设计模式”中的 UML土图觉“他们好像画错图拉”,我知道一定不是,大家一齐帮忙研究一下。下面举个“BUILDER MOTHOD”的UML图:

Director <>------> Builder
A
|
|
ConcreteBuilder -----> Product

我觉得应该是:
1. 类“Director” 与 类“Builder” 应为 依赖关系 即 Director ------> Builder 。

2. 类 “ConcreteBuilder” 与 类“Product” 之间应该是 聚合关系
即 ConcreteBuilder <>-----> Product.

怎么“他们”好象“用反”了图标?请指教。
...全文
163 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Frank6600 2006-02-19
更正一下,
上文我提到
我认为类 "Builder" 与 "ConcretBuilder" 之间是「实现」关系,
是因为为了便于理解,我自己画图时把 Builder 画成 Interface 了,
故认为是「实现」关系。

但图中分明把 Builder 画成 Abstract Class,
故用泛化关系来表示,是完全对的。

回复
Frank6600 2006-02-19
总的来说,

类“Director” 与 类“Builder” 应为 调用关系
他用单向聚合关系来表示,可以理解。
我个人认为是对的。

类 “ConcreteBuilder” 与 类“Product” 之间应该是 实例化关系
他用依赖或实例化关系来表示,是对的。

类 "Builder" 与 "ConcretBuilder" 之间,是继承或实现的关系,
他用继承或泛化关系来表示,是对的。
 
因此,我认同他的画法。
回复
Frank6600 2006-02-19
> 类 “ConcreteBuilder” 与 类“Product” 之间应该是 聚合关系

这又是怎么说﹖

我怎么看也觉得他们之间是「实例化」关系。

而 ---------> 既可以表示「依赖」关系,也可以表示「实例化」关系。

至于类 "Builder" 与 "ConcretBuilder" 之间,
它用「继承」或「泛化」关系来表达,
我个人则认为是「实现」关系。
而「实现」与「继承、泛化」关系,是有关连的,分别不是很大。
 
回复
pascal_lee_tw 2006-02-19
Ding
回复
Frank6600 2006-02-19
> UML都是从GOF那里演变过来的吧?

是吗﹖

不是吧!﹖
回复
Frank6600 2006-02-19
我倒觉得 Director 与 Builder 之间是调用关系
回复
Frank6600 2006-02-19
首先反问你,为什么认为 Director 与 Builder 之间是依赖关系﹖
回复
timmego 2006-02-19
请关照
回复
yjdabc 2006-02-16
你可以参考《UML与模式应用》第二版
回复
jiezhi 2006-02-16
gof中的图不是标准的uml图
回复
timmego 2006-02-16
请看一下。
回复
timmego 2006-02-16
那你们的意思是图有没有错?UML都是从GOF那里演变过来的吧? 怎么“依赖关系”的图标和“聚合关系”的图标与 现在的 UML刚好调转?郁闷ing...
回复
相关推荐
发帖
分析与设计
创建于2007-09-28

1.3w+

社区成员

.NET技术 分析与设计
申请成为版主
帖子事件
创建了帖子
2006-02-16 12:46
社区公告
暂无公告