桥接模式的目的是使得程序的抽象部分和实现部分相分离,使得相互间独立而不再相互依赖,使得抽象部分和实现部分的修改不至于引起对方的修改。
抽象部分抽象出供客户端直接使用的接口,而实现部分定义了抽象部分需要使用的接口,当抽象部分的实例引用了实现部分的接口的时候,我们所谓的桥接也就形成了。桥接是通过实现部分的引用,把抽象接口和实现部分的接口桥接起来,这就是桥接的来源。其原理图如下所示:
Abstraction定义了直接供客户端使用的接口,同时引用了Implementor的对象,而其中Implementor定义了实现部分的接口,这些接口是供抽象部分使用的。是的,通过桥接模式,实现部分的接口没有必要和抽象部分的接口一致,因此实现了抽象部分和实现部分的分离。当客户端向抽象部分的对象发送operationImp消息的时候,方法operationImp会向实现部分的引用imp发送消息operationImp,最后把消息传送到实现部分的具体对象。
因此,如果你想为实现部分新增另外一种实现方式,你只需要是新增的类实现Implementor定义的接口并且实现自定义的接口操作,最重要的是,该操作不会对抽象部分有任何的影响,抽象部分仍然可以在不知情的情况下继续正常工作。同样,如果你修改抽象部分,实现部分也是不需要跟着修改的,这就是桥接模式的魅力所在,完全是的抽象部分和实现部分独立起来。可以再来看看桥接模式的定义:
原文地址:http://blog.csdn.net/arbboter/article/details/42843679