桥接模式的核心是组合而非this,抽象类通过持有实现接口的引用并动态注入来解耦,this仅用于常规实例访问,不参与解耦逻辑。

this 关键字在桥接模式中并不承担“解耦抽象化与实现化角色”的核心职责。它不是桥接模式的设计要素,也不参与抽象层与实现层之间的关系绑定或解耦逻辑。
桥接模式的核心是组合,不是 this
桥接模式通过**将抽象部分与实现部分分离,并使用组合(而非继承)让二者可以独立变化**来实现解耦。关键在于:
- 抽象类(Abstraction)持有一个指向实现接口(Implementor)的引用
- 该引用通常通过构造函数或 setter 注入,而非依赖 this
- this 只表示当前对象实例,在桥接中它可能用于调用自身方法或传递自身引用,但不负责建立或管理桥接关系
常见误用:把 this 当作桥接纽带
例如有人写:
class Abstraction {
constructor() {
this.implementor = new ConcreteImplementor();
}
operation() {
return this.implementor.doIt(); // 这里用 this 访问成员,但桥接关系由赋值决定,不是 this 的能力
}
}
注意:这里的 this.implementor 是访问实例属性,不是靠 this 实现解耦;解耦来自“抽象类不依赖具体实现类”,而靠的是面向接口编程 + 组合委托。
真正支撑解耦的关键做法
- 定义清晰的实现接口(Implementor),所有具体实现类都实现它
- 抽象类只依赖该接口,不依赖任何具体实现类
- 运行时动态注入实现(如通过构造参数传入 implementor 实例)
- 避免在抽象类中 new 具体实现类——那会重新引入紧耦合
什么时候会用到 this?仅限于常规实例操作
在桥接结构中,this 的作用和其他任意类一样:
- 访问当前对象的属性和方法(如 this.implementor.doIt())
- 在回调或内部函数中显式绑定上下文(如 setTimeout(this.handler.bind(this), 100))
- 将当前实例作为参数传递给其他协作对象(极少见,且非桥接必需)
这些都属于 JavaScript 基础语法范畴,与桥接模式的设计思想无直接关联。


















