您的位置:首页 > 编程语言 > Java开发

Java桥接模式(Bridge)-结构型

2016-07-04 11:01 330 查看

意图

将抽象化与实现化解耦,使二者可以独立地变化。

类图与角色



抽象化角色(Abstraction):定义抽象化的接口。并保存一个对Implementor对象的引用。

修正抽象化角色(Refined Abstraction):改变和修正Abstraction对抽象化的定义。

实现化角色(Implementor):定义实现化的接口。必须指出的是,这个接口不一定与抽象化的接口定义相同,实际上,这两个接口可以完全不同。实现化应当只给出底层操作,而抽象化应当只给出基于底层操作的更高层次的操作。

具体实现化角色(Concrete Implementor):对Implementor接口的具体实现。

源代码

public class Abstraction{
protected Implementor impl;
public void  operation(){
//将客户端操作委派给实现化对象
impl.operationImpl();
}
}
public class RefinedAbstraction extends Abstraction{
@Override
public void operation(){
System.out.println("增强处理");
super.operation();
System.out.println("增强处理");
}
}
public interface Implementor{
public void operationImpl();
}
public class ConcreteImplementorA implements Implementor{
@Override
public void operationImpl(){
System.out.println("底层操作");
}
}
public class ConcreteImplementorB implements Implementor{
@Override
public void operationImpl(){
System.out.println("底层操作");
}
}

实例

JDBC驱动器

大多数的驱动器(Driver)都是桥梁模式的应用。使用驱动器的应用系统就是抽象化角色,而驱动器本身扮演实现化角色。

JDBC为所有的关系数据库提供了通用的界面,JDBC API(应用系统)可以动态地选择一个合适的驱动器,然后通过驱动器向数据库引擎发出指令。这个过程就是将抽象化角色的行为委派给实现化角色的过程。

抽象化角色(JDBC API)可以针对任何数据库引擎发出查询指令,因为抽象化角色不直接与数据库引擎打交道,JDBC驱动器(实现化角色)负责这个底层工作。由于JDBC驱动器的存在,应用系统(JDBC API)可以不依赖于数据库引擎的细节而独立地演化。同时数据库引擎也可以独立于应用系统的细节而独立演化。

应用程序建立在JDBC API这个抽象化角色的基础之上。



遥控器-电视



适用场景

如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。

设计要求实现化的任何改变不应当影响客户端,或者说实现化的改变对客户端是完全透明的。

一个构件有多于一个的抽象化角色和实现化角色,系统需要他们之间进行动态耦合。

桥接模式与适配器模式

适配器模式的目的是要改变已有的接口,让它们可以兼容,以使得原本不能一起工作的两个类一起工作。而桥梁模式是分离抽象化好实现化,使得两者的接口可以不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: