桥接模式和适配器模式很像,桥接模式和适配器模式用于设计的不同阶段,桥接模式用于系统的初步设计,对于存在两个独立变化维度的类可以将其分为抽象化和实现化两个角色,使它们可以分别进行变化;而在初步设计完成之后,当发现系统与已有类无法协同工作时,可以采用适配器模式。但有时候在设计初期也需要考虑适配器模式,特别是那些涉及到大量第三方应用接口的情况。
适配器模式是把一个调用者不能用的类转换成调用者可以用的类,桥接模式是在设计的时候就把两个都是有多实现的对象组合在一起。
举个栗子,各个品牌的电脑可以用各个品牌的显示器。
public interface Display{
void show();
}
public class HPDisplay implements Display{
@Override
public void show(){
sout("I'm HPDisplay.");
}
}
public class AOCDisplay implements Display{
@Override
public void show(){
sout("I'm AOCDisplay.");
}
}
public abstract class PC{
Display display;
public setPc(Display display){
this.display = display;
}
public abstract void run();
}
public LenovoPC extend PC{
@Override
public void run(){
sout("I'm LenovoPC.");
super.display.show();
}
}
public AsusPC extend PC{
@Override
public void run(){
sout("I'm AsusPC.");
super.display.show();
}
}
main(){
Display hp = new HPDisplay();
Display aoc = new AOCDisplay();
//联想主机用两种显示器
PC lenovoHp = new LenovoPC(hp);
PC lenovoAoc = new LenovoPC(aoc);
}