如果一个功能受三个维度影响,应该怎样组织类的关系?

lw1a2 2009-01-18 11:17:42
使用桥梁模式解决还是否合适?

举例:汽车的“耗油量”受汽车的“品牌”、“生产年份”、“载重量”影响。
“品牌”、“生产年份”、“载重量”可能存在多种组合,怎样组织类才合理?
...全文
87 点赞 收藏 17
写回复
17 条回复
armads12 2009年01月20日
ding
回复 点赞
noenoughmemory 2009年01月20日
ding
回复 点赞
michney 2009年01月19日
bridge也可以,
我觉得使用组合,三个维度都作为耗油量的成员变量
每一个维度都是一个接口类,构造时候动态的生成
回复 点赞
naturemickey 2009年01月19日
装饰模式(Decorator)
注:《Thinking in Patterns》里说的装饰模式与网上查到的其它说法是有一点区别的。
下载《Thinking in Patterns》:http://download.csdn.net/source/969323
这个下载是已经做好书签的,其它地方下载的这本书是没有书签的,因为这个书签是我自己做上去的。
回复 点赞
armads12 2009年01月19日
ding
回复 点赞
noenoughmemory 2009年01月19日
ding
回复 点赞
Wolf0403 2009年01月19日
why on earth would you put "耗油量" as a dedicated class anyway?
回复 点赞
michney 2009年01月19日
[Quote=引用 13 楼 hityct1 的回复:]
引用 8 楼 michney 的回复:
bridge也可以,
我觉得使用组合,三个维度都作为耗油量的成员变量
每一个维度都是一个接口类,构造时候动态的生成


这个需要三个维度不相关吧?如果有耦合关系,那就惨了。
[/Quote]
如果有耦合,那三个维度的划分肯定不合理
那说明软件本身的架构有问题,应该重构
需要重新抽象,再设计了
回复 点赞
hityct1 2009年01月19日
[Quote=引用 8 楼 michney 的回复:]
bridge也可以,
我觉得使用组合,三个维度都作为耗油量的成员变量
每一个维度都是一个接口类,构造时候动态的生成
[/Quote]

这个需要三个维度不相关吧?如果有耦合关系,那就惨了。
回复 点赞
hityct1 2009年01月19日
[Quote=引用楼主 lw1a2 的帖子:]
使用桥梁模式解决还是否合适?

举例:汽车的“耗油量”受汽车的“品牌”、“生产年份”、“载重量”影响。
“品牌”、“生产年份”、“载重量”可能存在多种组合,怎样组织类才合理?
[/Quote]


楼主似乎没有考虑“汽车型号”?


现实中品牌不会很多,每种品牌的载重量种类也不会很多。



回复 点赞
byteh 2009年01月19日
我感觉也是把简单问题弄复杂了!

“品牌”、“生产年份”、“载重量”都是一些属性,单独把这些东西拿出来脱离了实际的 “车”,没有任何意义!
回复 点赞
lw1a2 2009年01月19日
[Quote=引用 8 楼 michney 的回复:]
bridge也可以,
我觉得使用组合,三个维度都作为耗油量的成员变量
每一个维度都是一个接口类,构造时候动态的生成
[/Quote]
我是不是把简单问题想复杂了,我再想想
回复 点赞
lw1a2 2009年01月19日
[Quote=引用 7 楼 naturemickey 的回复:]
装饰模式(Decorator)
注:《Thinking in Patterns》里说的装饰模式与网上查到的其它说法是有一点区别的。
下载《Thinking in Patterns》:http://download.csdn.net/source/969323
这个下载是已经做好书签的,其它地方下载的这本书是没有书签的,因为这个书签是我自己做上去的。
[/Quote]
考虑过装饰模式,但是我这个功能不需要动态改变,使用装饰模式感觉不太合适
回复 点赞
waizqfor 2009年01月18日

帮顶
回复 点赞
xiaopoy 2009年01月18日
做一个计算用的宏,使用时即时计算?
回复 点赞
supercow 2009年01月18日
按照数据库的范式来尝试先分解呢.
像LZ这样的高深问题, 那种经验上的心得没法用言语来解释了...
回复 点赞
AlwaysSLH 2009年01月18日
upup
回复 点赞
发动态
发帖子
模式及实现
创建于2007-09-28

4547

社区成员

4178

社区内容

C/C++ 模式及实现
社区公告
暂无公告