app音乐网站开发,深圳挖矿app开发,柳州高端网站建设,宿州注册公司多少钱核心思想
适配器模式类似#xff0c;以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用#xff0c;且根据不同的场景进行搭配#xff0c;桥接模式也是结构型模式将抽象的部分和实现的部分分离#xff0c;使它们都可以独立的变化。通俗来说#xff0c;就是通…核心思想
适配器模式类似以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用且根据不同的场景进行搭配桥接模式也是结构型模式将抽象的部分和实现的部分分离使它们都可以独立的变化。通俗来说就是通过组合来桥接其它的行为或维度
与适配器模式业务场景对比
桥接模式用与设计前期精细化设计让系统更加灵活适配器模式用与设计完成之后发现类、接口之间无法一起工作需要进行填坑
场景使用
系统需要在构建的抽象化角色和具体角色之前增加更多的灵活性不想使用继承导致系统类的个数急剧增加有个时候一个类可能会拥有多个变化维度比如手机有不同的品牌和颜色可以使用继承组合的方式进行开发假如维度很多就容易出现类的膨胀使用桥接模式就可以解决这个问题而且解耦
继承方式 桥接模式 优缺点
优点
抽象与实现分离比较好的扩展能力
缺点
使用聚合关联关系建立在抽象层要求开发者针对抽象进行设计和编程增加系统的理解和设计难度
代码示例
颜色接口
public interface Color {void useColor();
}颜色接口实现
public class RedColor implements Color {Overridepublic void useColor() {System.out.println(红色);}
}public class WhiteColor implements Color {Overridepublic void useColor() {System.out.println(白色);}
}public class BlackColor implements Color {Overridepublic 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);}Overridepublic void run() {color.useColor();System.out.println(苹果手机);}
}public class XMPhone extends Phone {public XMPhone(Color color){super.setColor(color);}Overridepublic void run() {color.useColor();System.out.println(小米手机);}
}public class HWPhone extends Phone {public HWPhone(Color color){super.setColor(color);}Overridepublic 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();}
}