1、分离抽象实现:将抽象部分与他的具体实现部分进行分离,使他们都可以独立的变化、互不影响(解耦) 2、组合方式:通过组合的方式、建立两个类之间的关系,而不是继承

  • 使用桥梁连接两个类,在两个类之间建立某种联系,可以通过继承,也可以通过组合,桥接模式采用组合,合成复用原则、推荐优先使用组合!

    桥接模式和组合模式的区别

  • 组合模式 更强调部分 与整体间的组合

  • 桥接模式 更强调平行级别上,不同类的组合

    桥接模式和适配器模式

  • 共同点 都是让两个类配合工作

  • 不同点 目的性不同,

适配器模式 是改变已有接口、让二者之前互相配合,目的是配合
桥接模式 分离抽象和具体的实现,目的是分离

  1. class Speed{
  2. constructor(x, y){
  3. this.x = x;
  4. this.y = y;
  5. }
  6. run(){
  7. console.log('运动起来')
  8. }
  9. }
  10. class Color{
  11. constructor(color){
  12. this.color = color;
  13. }
  14. draw(){
  15. console.log('绘制色彩',this.color)
  16. }
  17. }
  18. // 桥接类-----球类
  19. class Ball{
  20. constructor(x, y, color){
  21. this.speed = new Speed(x, y);
  22. this.color = new Color(color);
  23. }
  24. init(){
  25. // 实现运动
  26. this.speed.run()
  27. // 实现绘制
  28. this.color.draw()
  29. }
  30. }
  31. let ball = new Ball(10,10,'red')
  32. ball.init()

总结

优点:

  • 提高扩展性
  • 分离抽象和实现(解耦)
  • 符合开闭原则
  • 符合合成复用原则

    缺点

  • 增加了系统复杂,理解和设计难度

  • 识别变化的维度:想要正确的识别出系统中的两个独立的变化

    适用场景

  • 独立变化为度:一个类存在2个或者更多的独立变化、并且这些维度都需要独立扩展

  • 不使用继承:不希望使用继承