核心思想
适配器模式 类似,以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用,且根据不同的场景进行搭配,桥接模式也是结构型模式 将抽象的部分和实现的部分分离,使它们都可以独立的变化。通俗来说,就是通过组合来桥接 其它的行为或维度
与适配器模式业务场景对比
桥接模式 用与设计前期,精细化设计,让系统更加灵活适配器模式 用与设计完成之后,发现类、接口之间无法一起工作,需要进行填坑
场景使用
系统需要在构建的抽象化角色和具体角色之前增加更多的灵活性 不想使用继承导致系统类的个数急剧增加 有个时候一个类,可能会拥有多个变化维度,比如手机,有不同的品牌和颜色,可以使用继承组合的方式进行开发,假如维度很多,就容易出现类的膨胀,使用桥接模式就可以解决这个问题,而且解耦
继承方式
桥接模式
优缺点
优点
缺点
使用聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程 增加系统的理解和设计难度
代码示例
颜色接口
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 ( ) ;
}
}