核心思想
适配器模式 类似,以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用,且根据不同的场景进行搭配,桥接模式也是结构型模式 将抽象的部分和实现的部分分离,使它们都可以独立的变化。通俗来说,就是通过组合来桥接 其它的行为或维度
与适配器模式业务场景对比
桥接模式 用与设计前期,精细化设计,让系统更加灵活适配器模式 用与设计完成之后,发现类、接口之间无法一起工作,需要进行填坑
场景使用
系统需要在构建的抽象化角色和具体角色之前增加更多的灵活性 不想使用继承导致系统类的个数急剧增加 有个时候一个类,可能会拥有多个变化维度,比如手机,有不同的品牌和颜色,可以使用继承组合的方式进行开发,假如维度很多,就容易出现类的膨胀,使用桥接模式就可以解决这个问题,而且解耦
继承方式
桥接模式
优缺点
优点
缺点
使用聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程 增加系统的理解和设计难度
代码示例
颜色接口
public interface Color { void useColor ( ) ;
}
颜色接口实现
public class RedColor implements Color { @Override public void useColor ( ) { System . out. println ( "红色" ) ; }
}
public class WhiteColor implements Color { @Override public void useColor ( ) { System . out. println ( "白色" ) ; }
}
public class BlackColor implements Color { @Override public void useColor ( ) { System . out. println ( "黑色" ) ; }
}
手机抽象类
public abstract class Phone { protected Color color; public void setColor ( Color color) { this . color = color; } abstract public void run ( ) ;
}
扩展维度
public class ApplePhone extends Phone { public ApplePhone ( Color color) { super . setColor ( color) ; } @Override public void run ( ) { color. useColor ( ) ; System . out. println ( "苹果手机" ) ; }
}
public class XMPhone extends Phone { public XMPhone ( Color color) { super . setColor ( color) ; } @Override public void run ( ) { color. useColor ( ) ; System . out. println ( "小米手机" ) ; }
}
public class HWPhone extends Phone { public HWPhone ( Color color) { super . setColor ( color) ; } @Override public void run ( ) { color. useColor ( ) ; System . out. println ( "华为手机" ) ; }
}
测试
public class AppRun { public static void main ( String [ ] args) { ApplePhone applePhone = new ApplePhone ( new RedColor ( ) ) ; applePhone. run ( ) ; System . out. println ( "====================" ) ; HWPhone blueHwPhone = new HWPhone ( new BlackColor ( ) ) ; blueHwPhone. run ( ) ; System . out. println ( "====================" ) ; HWPhone redHwPhone = new HWPhone ( new RedColor ( ) ) ; redHwPhone. run ( ) ; }
}