你好BANQ,请教模式使用

最近我们的一个项目中我使用了Bridge模式和Strategy模式,但却被技术老大拨回去了,他的理由或常用的做法是:
如果是业务层:他常是先定义一些接口,然后把一些相关的都放在一个接口类中实现,然后再去实现每个接口,我看了根本没有什么设计模式里面?但他认为这是一个很结构清晰的代码.
我的做法是:对一些相似的操作抽象成不同的接口,和不同的实现,比如,资料类,我把资料类和其操作分开好,使用bridge,行为有上传,修改,删除等,这种做法被老大否定了,说写的代码乱,没有层次性,而且动不动就NEW对角,一个类就一个方法,有什么可NEW的,浪费没有必要,而且有损性能?他说还不如就把资料写成一个接口,里面有上传,修改,删除,再去实现,这样一个类就搞定了,如果用BRIDGE的话,就需要写多个类,而且NEW了很多行为类,对此BANQ大哥,你有什么看法?你认为BRIDGE和把一些行为放在一个类中而不是用不同的类代表不同的行为这样的做法你认为哪种好?或者此模式一般是使用在什么情况下?

其实,关于模式有一点必须明确,模式是为业务设计服务的,所以业务设计是重点,那么业务设计规则是什么呢?参考领域建模。

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

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

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

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

哦,我明白你的意思,你的意思是使用Bridge模式是要对接口做统一,将一类行为统一为一个接口,这个接口中可能有多个行为,也就是说Bridge模式中的行为接口其实是一个大的,不具体的接口,而不是一个很具本的接口,如果这样的话,我可以把我凡是用户的行为统一为一个大的接口A,此A接口就扮演了Bridge模式中的行为接口,明白

>用户的行为统一为一个大的接口A
好像你正好理解反了,不要统一一个“大而无当”的接口,大而无当什么意思?就是太笼统太概况没有意义。

>但是,如果你将跑步 打球 游泳 吃饭 交友这些行为统一抽象为“人的行为”这么一个大而无当的概念,就没有意义,你的问题就出现在这里。
你的意思是要对接口做分类,不要太具本,一个接口代表一类行为
这不正是你的意思吗?
我所说的"用户的行为统一为一个大的接口A"就是这个意思

banq大哥,我说的对吗?

>但是,如果你将跑步 打球 游泳 吃饭 交友这些行为统一抽象为“人的行为”这么一个大而无当的概念,就没有意义,你的问题就出现在这里。
你的意思是要对接口做分类,不要太具本,一个接口代表一类行为
这不正是你的意思吗?
我所说的"用户的行为统一为一个大的接口A"就是这个意思

大胆估计一下, lz接触所谓“模式”的时间不长。是个新手吧。
个人感觉你是为模式而模式,是对模式的理解不深。
我同意你老大的观点。

给lz提一点建议
更重要的问题不是努力去搞清楚Bridge或Strategy怎么使用, 而是去了解一下为什么会又所谓的“模式”, 人们提出他的初衷是什么, 我觉得你使用模式的方式和四大头提出他的初衷是背道而驰了。over-engineered

你们认为Bridge中的接口应该怎么定义才合适,你认为怎么使用Bridge模式,你说对了,我确实是一个新手,正是因为不懂,所以才请教Banq大哥,如果你知道的话,能不能告诉我?谢谢(我的MSN:lygsniper@hotmail.com,如果有意的话,我们在MSN上可以聊聊,我觉的你是一个高手)

对于只有上传,修改,删除这有限的几项操作的行为,就没有必要用Bridge了,除非你预见未来还会有很多行为出现。

感觉bridge只在迫不得已的情况下用用...adapter好
设计太花哨了不好

又见模式,我们老板说“不要去管什么模式,无招胜有招!”

我的看法:

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

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

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

里面有上传,修改,删除,再去实现,这样一个类就搞定了,如果用BRIDGE的话,就需要写多个类,而且NEW了很多行为类,对此BANQ大哥,你有什么看法?你认为BRIDGE和把一些行为放在一个类中而不是用不同的类代表不同的行为这样的做法你认为哪种好?或者此模式一般是使用在什么情况下?
-----------------------------------------------------------------------------
桥模式主要应用背景是,
抽象类行为的具体实现中有重复的方法行为
比如按照原先的
照片和文档继承了资料抽象类,在具体的实现比如修改的时候是不是要特别为照片和文档写2个
修改的方法,但是如果这2个修改的方法具体实现是相同的(比如调用了另外库中的修改方法),那么不是重复了吗,这个时候就可以应用桥模式,将抽象成一个接口,并且对象应用,这样就可以不用一个一个去实现了