一、定义

将抽象和实现解耦,使得两者可以独立的变化。

二、类图表示

桥接模式

三、实现

1、Implementor

package pattern.structual.bridge;

public abstract class Implementor {

	public abstract void operation();
}


package pattern.structual.bridge;

public class ConcreteImplementorA extends Implementor {

	@Override
	public void operation() {
		System.out.println("ConcreteImplementorA operation...");
	}

}


package pattern.structual.bridge;

public class ConcreteImplementorB extends Implementor{

	@Override
	public void operation() {
		System.out.println("ConcreteImplementorB operation...");
	}

}

2、Abstraction

package pattern.structual.bridge;

public abstract class Abstraction {

	protected Implementor implementor;

	public void setImplementor(Implementor implementor) {
		this.implementor = implementor;
	}
	
	public abstract void operation();
}


package pattern.structual.bridge;

public class RefinedAbstraction extends Abstraction {

	@Override
	public void operation() {
		implementor.operation();
	}

}

四、使用

package pattern.structual.bridge;

public class Client {

	public static void main(String[] args) {
		Abstraction abstraction = new RefinedAbstraction();
		abstraction.setImplementor(new ConcreteImplementorA());
		abstraction.operation();
		
		abstraction.setImplementor(new ConcreteImplementorB());
		abstraction.operation();
	}
}

  • 程序输出:

ConcreteImplementorA operation...

ConcreteImplementorB operation...

五、适用场合

  • 不希望在抽象和它的实现之间有一个固定的绑定关系(在程序运行时,实现部分可以被选择或切换)
  • 类的抽象和实现都可以通过增加子类的方式进行扩展
  • 对一个抽象的实现部分的修改不应该对客户端产生影响,即客户端的代码不必重新编译