你好BANQ,请教Bridge模式

xysniper
06-12-10 8 328

Bridge模式:就是将抽象和行为分开,分别都有自己的接口和实现类,这样,抽象是不变的,但行为可以任意添加变化,而互相不会影响,比如记日志,日志是接口,有不同的实现:TXT日志,DB日志,行为是怎么记法?在.NET和JAVA平台下有不同的记法,如果再添加一个记法:Other,则不需要修改任何类,这个模式主要是增强程序的可扩展性,降代类之间的耦合

问题:在这个模式中,你曾经说过抽象是不能变化的,我想问一下,即然抽象是不变的,你为什么还要在你的文章中把抽象也定义成了接口,不变,那么我就可以用一个具体类了,请回答一下,谢谢?

banq
2006-12-11 10:43

>那么我就可以用一个具体类了,请回答一下
可以的,比如模型类就是一个具体类,模型类的持久化动作就是分离的。

xysniper
2006-12-11 20:29

这个模式我还有一个问题:只要将抽象和行为分开就行了,而不需要考虑抽象是否要变化,也叫Bridge模式吗?比如,当抽象是一个Log,可以有TxtLog,DocLog等,行为是writeInJava,writeInNet,这个例子中抽象就是变化的(因为可以有不同的Log实现),这样还叫Bridge模式,或者Bridge的重点在哪?谢谢

banq
2006-12-13 13:30

>Bridge的重点在哪
重点实际是:抽象和行为编码设计时分离;运行时再进行组合。
首先是分离;然后再是合并。

xysniper
2006-12-13 13:49

>抽象和行为编码设计时分离;运行时再进行组合
我想对于"运行时再进行组合"这句也是在编码阶段完成的,运行时怎么会自动合并呢,程序怎么知道谁要和谁合并

还有就是:这个模式抽象到底能不能变化,如果能变化,这个变化到底是指什么在变化

2Go 1 2 下一页