桥接模式就是将多个抽象组合在一起。
比如游戏机和手柄都是抽象 客户需要根据自己的需要选择不同的游戏机和手柄
//游戏机
public interface GameContainer{
void startGame();
}
//手柄
public interface Handle{
void handle();
}
// 完整的机器
public abstract class Host{
private GameContainer gameContainer;
private Handle handle;
public Host(GameContainer gameContainer,Handle handle){
this.gameContainer=gameContainer;
this.handle=handle;
}
//游戏机工作的方法
public abstract void work();
public void startGame(){
gameContainer.startGame();
}
public void handle(){
handle.handle();
}
}
// Xbox360机器
public Xbox360 extends Host{
public Xbox360(GameContainer gameContainer,Handle handle){
super(gameContainer,handle);
}
//游戏机工作的方法
public void work(){
//Xbox360机器 开始工作了
startGame();
handle();
}
}
桥接模式和装饰模式:
这两个模式在 定程度上都可减少子类的数目,避免出现复杂的继承关系 但是它们解决 的方法却各有不同,装饰模式把子类中比基类多出来的部分放到单独的类里面,以适应新功能 的增加,把描述新功能的类封装到基类的对象里面时,就得到了所需要的子类对象,这些描述 新功能的类通过组合可以实现很多的功能组合。而桥接模式是把两个以上独立的抽象维度分离, 使用聚合的方式使其关联,来达到减少子类的目的,结构上桥接模式比装饰模式要复杂。
桥接模式和适配器模式:
他们的共同点是桥接和适配器都是让两个类配合工作,它们的区别是出发点不同,适配器 的出发点是改变已有的两个接口,让它们相容 桥接模式的出发点是分离抽象化和实现化,使 两者的接口可以不同,目的是分离