你好BANQ,请教模式使用

06-12-28 xysniper
最近我们的一个项目中我使用了Bridge模式和Strategy模式,但却被技术老大拨回去了,他的理由或常用的做法是:

如果是业务层:他常是先定义一些接口,然后把一些相关的都放在一个接口类中实现,然后再去实现每个接口,我看了根本没有什么设计模式里面?但他认为这是一个很结构清晰的代码.

我的做法是:对一些相似的操作抽象成不同的接口,和不同的实现,比如,资料类,我把资料类和其操作分开好,使用bridge,行为有上传,修改,删除等,这种做法被老大否定了,说写的代码乱,没有层次性,而且动不动就NEW对角,一个类就一个方法,有什么可NEW的,浪费没有必要,而且有损性能?他说还不如就把资料写成一个接口,里面有上传,修改,删除,再去实现,这样一个类就搞定了,如果用BRIDGE的话,就需要写多个类,而且NEW了很多行为类,对此BANQ大哥,你有什么看法?你认为BRIDGE和把一些行为放在一个类中而不是用不同的类代表不同的行为这样的做法你认为哪种好?或者此模式一般是使用在什么情况下?

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

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

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

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

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

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

banq
2006-12-30 11:57
>用户的行为统一为一个大的接口A

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

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

你的意思是要对接口做分类,不要太具本,一个接口代表一类行为

这不正是你的意思吗?

我所说的"用户的行为统一为一个大的接口A"就是这个意思

猜你喜欢
4Go 1 2 3 4 下一页