[typescript] 객체들의 상호작용을 중재하는 중재자 패턴과 타입스크립트의 결합 사례

상호작용하는 객체들 간의 결합을 줄이고 유연성을 확보하기 위해 중재자 패턴을 사용하는 것은 매우 효율적입니다. 이 패턴은 객체 간 직접적인 통신을 방지하고, 중재자를 통해 상호작용하도록 설계됩니다. 이번 글에서는 이러한 중재자 패턴을 타입스크립트로 어떻게 구현하는지 알아보겠습니다.

중재자 패턴이란?

중재자 패턴은 객체들 사이의 상호작용을 중재하는 디자인 패턴으로, 객체들 간의 직접적인 통신을 방지하고 대신 중재자를 통해 통신하도록 하는 것을 목표로 합니다. 이를 통해 객체들 간의 결합도를 낮추고 유연성을 확보할 수 있습니다.

타입스크립트와 중재자 패턴

타입스크립트는 정적 타입 지정을 지원하므로 중재자 패턴의 구현에 매우 적합합니다. 각 객체와 중재자의 역할을 명확히 정의하고 타입스크립트의 강력한 타입 시스템을 활용하여 상호작용을 안전하게 구현할 수 있습니다.

예시: 주문 처리 시스템의 중재자 패턴

// 주문자
class Buyer {
  constructor(private mediator: Mediator) {}

  buy() {
    this.mediator.buy()
  }

  completePurchase() {
    console.log('Purchase completed')
  }
}

// 판매자
class Seller {
  constructor(private mediator: Mediator) {}

  sell() {
    this.mediator.sell()
  }

  ship() {
    console.log('Item shipped')
  }
}

// 중재자
class Mediator {
  constructor(private buyer: Buyer, private seller: Seller) {}

  buy() {
    console.log('Buyer wants to buy')
    this.seller.sell()
  }

  sell() {
    console.log('Seller wants to sell')
    this.buyer.completePurchase()
  }
}

const buyer = new Buyer(new Mediator(buyer, seller))
const seller = new Seller(new Mediator(buyer, seller))
buyer.buy()
seller.ship()

위 예시에서 중재자 역할을 하는 Mediator 클래스를 통해 구매자와 판매자는 직접적으로 통신하지 않고, 중재자를 통해 상호작용합니다. 이를 통해 각 객체는 서로의 구현에 대한 의존성을 줄일 수 있습니다.

결론

타입스크립트의 강력한 타입 시스템과 중재자 패턴은 객체 간 상호작용을 효율적으로 관리하고 유연성을 확보하는데 매우 유용합니다. 이를 통해 애플리케이션의 유지보수성과 확장성을 향상시킬 수 있습니다.