Ваш лучший друг по развязке.

_00 / Концепция

Представьте, что вы строите мост. Этот шаблон направлен на то, чтобы разбить ваш связанный код, а затем использовать способ, похожий на инъекцию, для составления вашего «моста».

_01 / Ключевые роли

Абстракция и Реализатор. Абстракция ничего не делает сама по себе. Вместо этого он вызывает метод разработчика. Одна абстракция может иметь несколько реализаторов.

// abstraction
class BasketballPlayer {
  constructor(trainAPI, scoreAPI) {
    this.trainAPI = trainAPI
    this.scoreAPI = scoreAPI
  }
  train() { this.trainAPI.execute() }
  score() { this.scoreAPI.execute() }
}
// implementor
class TrainShoot extends TrainAPI() {
  execute() { ... }
}
class ScoreDunk extends ScoreAPI() {
  execute() { ... }
}
// client 
const trainShoot = new TrainShoot()
const scoreDunk = new ScoreDunk()
const playerA = new BasketballPlayer(trainShoot, scoreDunk)

_02 / Компромиссы

🟢 Развязка и расширяемость.
🟢 Очень хорошо следуйте правилам ООП.
🔴 Больше кодов, трудно управлять.