JiveJdon Community Forums
在线445人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
1 2 Go 总共有 15 回复 / 2
 发表新帖子   回复该主题贴
thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
你好BANQ,请教模式使用 2006年12月28日 09:28 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 设计模式(165)      bridge模式(10)     
最近我们的一个项目中我使用了Bridge模式和Strategy模式,但却被技术老大拨回去了,他的理由或常用的做法是:
如果是业务层:他常是先定义一些接口,然后把一些相关的都放在一个接口类中实现,然后再去实现每个接口,我看了根本没有什么设计模式里面?但他认为这是一个很结构清晰的代码.
我的做法是:对一些相似的操作抽象成不同的接口,和不同的实现,比如,资料类,我把资料类和其操作分开好,使用bridge,行为有上传,修改,删除等,这种做法被老大否定了,说写的代码乱,没有层次性,而且动不动就NEW对角,一个类就一个方法,有什么可NEW的,浪费没有必要,而且有损性能?他说还不如就把资料写成一个接口,里面有上传,修改,删除,再去实现,这样一个类就搞定了,如果用BRIDGE的话,就需要写多个类,而且NEW了很多行为类,对此BANQ大哥,你有什么看法?你认为BRIDGE和把一些行为放在一个类中而不是用不同的类代表不同的行为这样的做法你认为哪种好?或者此模式一般是使用在什么情况下?
banq

悄悄话
发表文章: 9481
注册时间: 2002年08月03日 17:08
Re: 你好BANQ,请教模式使用 2006年12月28日 10:20 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
其实,关于模式有一点必须明确,模式是为业务设计服务的,所以业务设计是重点,那么业务设计规则是什么呢?参考领域建模。

第二:模式是为应付变化而产生一种应对技巧活策略,如果你当前不能确定哪个方面会变化,就不要使用模式,等将来某个方面发生变化,而且第二次同一个地方发生变化了,就需要启用模式了。

所以,针对你这个案例,业务行为是“上传,修改,删除”,你将"上传,修改,删除"分别做一个类,也就是说,你认为将来除了这3个行为外,还可能发生新的行为,这样考虑是有道理的,但是你考虑到,这3个行为及其将来可能发生新行为能不能抽象成一个统一接口,也就是代表一类业务抽象行为?你可能只能用笼统的四个字来抽象“业务行为”,这几个行为如果只能用很笼统最普遍的概念来抽象,而不是具体某个业务概念,那么,使用Bridge就失去意义。

比如,以人为例子,人的行为有跑步 打球 游泳,那么我们可以抽象为业务行为为“运动行为”,运动行为是人的业务行为中具体一个行为,除运动行为外,人还有其他行为,如生活行为;交谊行为等等。

但是,如果你将跑步 打球 游泳 吃饭 交友这些行为统一抽象为“人的行为”这么一个大而无当的概念,就没有意义,你的问题就出现在这里。

thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
Re: 你好BANQ,请教模式使用 2006年12月28日 15:20 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
哦,我明白你的意思,你的意思是使用Bridge模式是要对接口做统一,将一类行为统一为一个接口,这个接口中可能有多个行为,也就是说Bridge模式中的行为接口其实是一个大的,不具体的接口,而不是一个很具本的接口,如果这样的话,我可以把我凡是用户的行为统一为一个大的接口A,此A接口就扮演了Bridge模式中的行为接口,明白
banq

悄悄话
发表文章: 9481
注册时间: 2002年08月03日 17:08
Re: 你好BANQ,请教模式使用 2006年12月30日 11:57 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
>用户的行为统一为一个大的接口A
好像你正好理解反了,不要统一一个“大而无当”的接口,大而无当什么意思?就是太笼统太概况没有意义。
thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
Re: 你好BANQ,请教模式使用 2006年12月30日 13:50 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
>但是,如果你将跑步 打球 游泳 吃饭 交友这些行为统一抽象为“人的行为”这么一个大而无当的概念,就没有意义,你的问题就出现在这里。
你的意思是要对接口做分类,不要太具本,一个接口代表一类行为
这不正是你的意思吗?
我所说的"用户的行为统一为一个大的接口A"就是这个意思
thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
回复:Re: 你好BANQ,请教模式使用 2007年01月04日 13:41 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
banq大哥,我说的对吗?
thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
回复:Re: 你好BANQ,请教模式使用 2007年01月09日 13:01 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
>但是,如果你将跑步 打球 游泳 吃饭 交友这些行为统一抽象为“人的行为”这么一个大而无当的概念,就没有意义,你的问题就出现在这里。
你的意思是要对接口做分类,不要太具本,一个接口代表一类行为
这不正是你的意思吗?
我所说的"用户的行为统一为一个大的接口A"就是这个意思
Edgra

悄悄话
发表文章: 18
注册时间: 2006年12月26日 16:53
re:你好BANQ,请教模式使用 2007年01月19日 10:53 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
大胆估计一下, lz接触所谓“模式”的时间不长。是个新手吧。
个人感觉你是为模式而模式,是对模式的理解不深。
我同意你老大的观点。
Edgra

悄悄话
发表文章: 18
注册时间: 2006年12月26日 16:53
re:你好BANQ,请教模式使用 2007年01月19日 10:59 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
给lz提一点建议
更重要的问题不是努力去搞清楚Bridge或Strategy怎么使用, 而是去了解一下为什么会又所谓的“模式”, 人们提出他的初衷是什么, 我觉得你使用模式的方式和四大头提出他的初衷是背道而驰了。over-engineered
thinkjava

悄悄话
发表文章: 112
注册时间: 2007年11月03日 19:22
回复:re:你好BANQ,Edgra请教模式使用 2007年01月22日 09:23 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
你们认为Bridge中的接口应该怎么定义才合适,你认为怎么使用Bridge模式,你说对了,我确实是一个新手,正是因为不懂,所以才请教Banq大哥,如果你知道的话,能不能告诉我?谢谢(我的MSN:lygsniper@hotmail.com,如果有意的话,我们在MSN上可以聊聊,我觉的你是一个高手)
firstaking

悄悄话
发表文章: 2
注册时间: 2007年02月01日 16:48
re:你好BANQ,请教模式使用 2007年02月01日 17:15 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
对于只有上传,修改,删除这有限的几项操作的行为,就没有必要用Bridge了,除非你预见未来还会有很多行为出现。
johnliuy

悄悄话
发表文章: 3
注册时间: 2007年07月19日 01:23
re:你好BANQ,请教模式使用 2007年07月19日 17:24 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
感觉bridge只在迫不得已的情况下用用...adapter好
设计太花哨了不好
Juno

悄悄话
发表文章: 3
注册时间: 2007年07月27日 16:38
re:你好BANQ,请教模式使用 2007年07月27日 16:32 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
又见模式,我们老板说“不要去管什么模式,无招胜有招!”
bennyparlo

悄悄话
发表文章: 4
注册时间: 2007年09月13日 14:15
re:你好BANQ,请教模式使用 2007年09月13日 16:28 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
我的看法:

对于楼主提到的:"如果是业务层:他常是先定义一些接口,然后把一些相关的都放在一个接口类中实现,然后再去实现每个接口,我看了根本没有什么设计模式里面?"

这其实已经是种bridge模式的体现了

至于是否有必要使用策略模式,那个人认为对于业务层里的每种行为实现,是否有必要提供多种不同的算法.
slargy

悄悄话
发表文章: 7
注册时间: 2008年04月27日 12:57
re:你好BANQ,请教模式使用 2008年04月30日 13:55 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
里面有上传,修改,删除,再去实现,这样一个类就搞定了,如果用BRIDGE的话,就需要写多个类,而且NEW了很多行为类,对此BANQ大哥,你有什么看法?你认为BRIDGE和把一些行为放在一个类中而不是用不同的类代表不同的行为这样的做法你认为哪种好?或者此模式一般是使用在什么情况下?
-----------------------------------------------------------------------------
桥模式主要应用背景是,
抽象类行为的具体实现中有重复的方法行为
比如按照原先的
照片和文档继承了资料抽象类,在具体的实现比如修改的时候是不是要特别为照片和文档写2个
修改的方法,但是如果这2个修改的方法具体实现是相同的(比如调用了另外库中的修改方法),那么不是重复了吗,这个时候就可以应用桥模式,将抽象成一个接口,并且对象应用,这样就可以不用一个一个去实现了
这个主题有 15 回复 / 2Go 1 2
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  发贴前查询 标签列表勿重复发表问题

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam