关于这个桥接模式,最常见的就是jdbc中的driver,在不需要修改上层代码的情况下,通过加载不同的驱动器,可以使用不同 的数据库。
而网上,都说,所谓桥接模式,就是区分,抽象和具体实现的,可以实现解耦,并且还可以实现动态结合,尤其对于,有多维度变化的特征,适合用此模式。
来看图
抽象类(Abstraction):定义抽象类的接口,维护一个指向Implementor类型对象的指针
扩充抽象类(RefinedAbstraction):扩充由Abstraction定义的接口
实现类接口(Implementor):定义实现类的接口,该接口不一定要与 Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来讲, Implementor接口仅提供基本操作,而 Abstraction则定义了基于这些基本操作的较高层次的操作。
具体实现类(ConcreteImplementor):实现Implementor接口并定义它的具体实现。
如果还是不明白,就是,它是一座桥,从这边通向另外一边的。
说个例子,就是,去奶茶店和奶茶,那你必须要告诉老板,是大,小,中杯?还有要不要加糖??
就这个情景,该怎么设计类?
组合一下有6种,如果,你要传统的继承会发现代码重复很多。怎么办?
那可以设计一个抽象类,杯子,还有一个接口,加糖这个动作。
那么两两组合,就会产生你想要的效果。
注意,抽象类里面的方法,可以和接口里面的方法不同。
而且抽象类里面一直维护着一个接口的实例。
没什么好例子推荐,就看这个吧