模式定义

桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。

下图是该模式的类图:
\"桥接模式的类图\"

一个生动例子

使用模式之前的代码如下:

public abstract class RemoteControl {
	abstract void setChannel(int chnnel);
}

class RCAControl extends RemoteControl {

	@Override
	void setChannel(int chnnel) {
		tuneChnnel(chnnel);
	}

	private void tuneChnnel(int chnnel) {
		System.out.println(\"RCA tuneChnnel...\");
	}
}

class SonyControl extends RemoteControl {

	@Override
	void setChannel(int chnnel) {
		tuneChnnel(chnnel);
	}

	private void tuneChnnel(int chnnel) {
		System.out.println(\"Sony tuneChnnel...\");
	}
}

使用模式之后的代码下:

抽象层次:
public abstract class RemoteControl {
	private TV tv;

	public RemoteControl(TV tv) {
		this.tv = tv;
	}

	protected void setChannel(int chnnel) {
		tv.tuneChnnel(chnnel);
	}
}

class ConcreteRemote extends RemoteControl {
	private int currenStation;

	public ConcreteRemote(TV tv) {
		super(tv);
	}

	public void nextChannel() {
		setChannel(++currenStation);
	}

	public int getCurrenStation() {
		return currenStation;
	}

	public void setCurrenStation(int currenStation) {
		this.currenStation = currenStation;
	}
}
实现层次:

public abstract class TV {
	abstract void tuneChnnel(int chnnel);
}

class RCA extends TV {

	@Override
	void tuneChnnel(int chnnel) {
		System.out.println(\"RCA tuneChnnel...\");
	}
}

class Sony extends TV {
	@Override
	void tuneChnnel(int chnnel) {
		System.out.println(\"Sony tuneChnnel...\");
	}
}

参考

  1. Head First 设计模式[书籍]
收藏 打印