详解JS设计模式之桥接模式用法
作者:慕仲卿
javascript桥接桥接设计模式(Bridge Pattern)是一种结构型设计模式,它用于将抽象部分与其具体实现部分分离,使它们可以独立地变化,本文将通过代码示例详解的给大家介绍一下JS桥接模式,需要的朋友可以参考下
定义
桥接设计模式(Bridge Pattern)是一种结构型设计模式,它用于将抽象部分与其具体实现部分分离,使它们可以独立地变化。
组成
在桥接模式中,有两个关键角色:
抽象部分(Abstraction):抽象部分定义了高层的接口和功能,它持有一个对实现部分的引用。抽象部分通常包含被抽象了的方法或接口,用于定义高层接口的操作。 注意这里被抽象了的方法或接口不是Ts中的抽象方法。
实现部分(Implementation):实现部分定义了具体的实现逻辑,它通常是一个接口或抽象类,并提供了供抽象部分调用的具体方法。
通过将抽象部分和实现部分分离,桥接模式允许它们可以独立地变化。这种解耦的好处在于,当需要新增一个抽象部分或实现部分时,不需要修改已有的代码。
代码
// 实现部分 - 具体实现A class DomElementHandler { constructor(elementId) { this.elementId = elementId; } setText(text) { const element = document.getElementById(this.elementId); element.textContent = text; } } // 抽象部分 - 桥接类 class DomBridge { constructor(handler) { this.handler = handler; } /* 错误的写法 constructor(){ this.handler = new DomElementHandler("myElement"); } */ setText(text) { this.handler.setText(text); } } // 示例用法 const domHandler = new DomElementHandler("myElement"); // 创建具体实现A对象 const domBridge = new DomBridge(domHandler); // 使用具体实现A创建桥接对象 domBridge.setText("Hello, Bridge Pattern!");
符合DIP原则
依赖倒置原则:依赖倒置原则是面向对象设计中的一个重要原则,它主张高层模块不应该依赖于低层模块,两者都应该依赖于抽象。也就是说,【抽象不应该依赖于具体实现细节,具体实现细节应该依赖于抽象】。
桥接模式通过引入一个桥接接口或抽象类来实现依赖倒置原则。
抽象部分和实现部分之间通过组合关系进行关联。这样,抽象部分不依赖于具体实现类,而是依赖于抽象接口或抽象类,从而实现了依赖倒置。
对比策略模式
- 策略模式提供了一个修改策略的接口,而桥接模式注入实现的过程是在构造函数中,所以是不可变的
- 桥接模式强调抽象和实现的解耦,所以方法名必须一致,都是setText,而策略模式可能会用到多个策略,并且使用的方法不抽象
- 策略模式使用多个策略的时候可以将它们随意组合,而桥接模式必须保证抽象方法和实现方法同名,不能将实现对象组合使用
使用场景
原生js中没有直接对此模式的使用,但是在UI库开发,动画,主题,获取数据源的业务场景中用得较多。
总结
桥接模式解决的是:统一提调来自不同类的实例对象上的同名方法的问题。
到此这篇关于详解JS设计模式之桥接模式用法的文章就介绍到这了,更多相关JS桥接模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!