首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

请教GOF设计模式中Builder模式的图是不是写错了?晕

2012-03-05 
请问GOF设计模式中Builder模式的图是不是写错了??晕啊图论坛不支持画,不过这种图网上都有下的。问题是:在Bu

请问GOF设计模式中Builder模式的图是不是写错了??晕啊
图论坛不支持画,不过这种图网上都有下的。
问题是:在Builder模式中

Director类     “关联(聚合)”了Builder抽象类

问题是,在他提供代码中
Maze   *MazeGame::CreateMaze   (MazeBuilder&   builder){
builder.BuildMaze();
builder.BuildRoom(1);
builder.BuildRoom(2);

return   builder.GetMaze();
}//MazeGame   相当于Director

2个类之间明明是依赖关系,Director只是暂时的用到了Builder,是 "use   a "的关系
而关联呢?应该是一种永久的结构性关系,应属于域可见,而不是参数可见
我觉得只能说,这2者之间的关系比较紧,却不能说“关联”!!!


不知道我说的对不对   望高手指点~~~~~~

[解决办法]
应该是聚合把,里面特别提出使用类聚合来代替继承
[解决办法]
Builder的存在依赖于Director的存在,所以也可以说是Aggregate。

http://xilaile.blogjava.net
[解决办法]
是聚合还是相识,依赖于关联两者的生存期和关联程度。

GoF也强调二者在实现和表示上没有太大区别,用聚合可以表明二者不是简单的在一两次操作上有关联,其耦合程度要高。

builder.BuildMaze();
builder.BuildRoom(1);
builder.BuildRoom(2);

可以说聚合关系是对象组合的一个典范。体现了不同于继承的良好封装和动态特性。
[解决办法]
Director 使用了 Builder创建子对象
初看是仅仅为依赖关系
但在你使用该模式时,创建的对象是不是需要拿来使用呢?
既然要用那么就需要返回一个组合对象,这就建立了关联关系

GOF的设计模式没有明确说明这个隐含条件
当你具体使用这个模式设计时你就能体会到了

设计模式提供的是一个思想,在使用时都是可以灵活变通的,并不需要在这些细节上斤斤计较

[解决办法]

支持:yanluo129(仰望天堂) ( ) 信誉:100

设计模式提供的解决某类问题的思想,而《GOF的设计模式》中仅仅是解决这类问题的一个范例,而非标准、原则。

热点排行