这次来看下桥接模式,将抽象部分与实现部分分离,使它们都可以独立的变化。
对于类之间相互引用,但是变化又十分频繁,可以抽象出来放在抽象类里面进行聚合。
来看下类图:
类图也很简单,没有什么复杂的地方,直接看下代码吧:
public abstract class RemoteControl { protected TV tv; public RemoteControl(TV tv) { this.tv = tv; } public void on() { tv.on(); } public void off() { tv.off(); } abstract void setChannel(); }
public class ConcreteRemote extends RemoteControl { public ConcreteRemote(TV tv) { super(tv); } @Override void setChannel() { tv.tuneChannel(); } }
public interface TV { void on(); void off(); void tuneChannel(); }
public class Sony implements TV { @Override public void on() { System.out.println("索尼电视机打开了"); } @Override public void off() { System.out.println("索尼电视机关闭了"); } @Override public void tuneChannel() { System.out.println("索尼电视机换频道了"); } }
public class Sharp implements TV { @Override public void on() { System.out.println("夏普电视机打开了"); } @Override public void off() { System.out.println("夏普电视机关闭了"); } @Override public void tuneChannel() { System.out.println("夏普电视机换频道了"); } }