[typescript] 중재자 패턴과 타입스크립트의 결합 사례

중재자 패턴(Mediator Pattern)은 객체 간의 상호작용을 캡슐화하여 여러 객체 간의 직접적인 상호작용을 방지하고, 객체 간 결합을 약화시키는 디자인 패턴입니다. 이 패턴을 통해 시스템을 더 모듈화하여 유지보수 및 확장성을 증가시킬 수 있습니다.

타입스크립트(TypeScript)는 정적 타입을 지원하는 프로그래밍 언어로, 중재자 패턴을 적용하는 데 매우 적합합니다. 타입스크립트는 각 객체와 상호작용하는 메서드 및 속성의 타입을 명확히 정의하고 관리할 수 있기 때문에 중재자 패턴을 구현 및 유지보수하기에 용이합니다.

중재자 패턴의 구현

중재자 패턴을 타입스크립트로 구현하는 한 가지 예로, 간단한 채팅 애플리케이션을 만들어보겠습니다.

interface Mediator {
  send(message: string, sender: Colleague): void;
}

class ConcreteMediator implements Mediator {
  private colleague1: Colleague;
  private colleague2: Colleague;

  setColleague1(colleague: Colleague) {
    this.colleague1 = colleague;
  }

  setColleague2(colleague: Colleague) {
    this.colleague2 = colleague;
  }

  send(message: string, sender: Colleague) {
    if (sender === this.colleague1) {
      this.colleague2.receive(message);
    } else {
      this.colleague1.receive(message);
    }
  }
}

interface Colleague {
  send(message: string): void;
  receive(message: string): void;
}

class ConcreteColleague1 implements Colleague {
  constructor(private mediator: Mediator) {}

  send(message: string) {
    this.mediator.send(message, this);
  }

  receive(message: string) {
    console.log('ConcreteColleague1 received: ' + message);
  }
}

class ConcreteColleague2 implements Colleague {
  constructor(private mediator: Mediator) {}

   send(message: string) {
    this.mediator.send(message, this);
  }

  receive(message: string) {
    console.log('ConcreteColleague2 received: ' + message);
  }
}

const mediator = new ConcreteMediator();
const colleague1 = new ConcreteColleague1(mediator);
const colleague2 = new ConcreteColleague2(mediator);

mediator.setColleague1(colleague1);
mediator.setColleague2(colleague2);

colleague1.send('Hello, colleague2!');
colleague2.send('Hi, colleague1!');

위의 코드는 중재자 패턴을 활용한 간단한 채팅 애플리케이션의 예시입니다. 중재자는 모든 동료 객체와 소통하며, 동료 객체는 중재자로 메시지를 보내고 중재자는 메시지를 다른 동료 객체에게 전파합니다.

타입스크립트의 장점

타입스크립트를 사용하여 중재자 패턴을 구현하면 다음과 같은 장점을 얻을 수 있습니다.

결론

중재자 패턴과 타입스크립트는 상호 보완적인 특징을 가지고 있어 함께 사용할 때 많은 이점을 얻을 수 있습니다. 타입스크립트의 타입 시스템을 활용하여 중재자 패턴을 구현하면 코드의 품질을 향상시키고 유지보수를 용이하게 할 수 있습니다. 따라서 타입스크립트를 사용하여 중재자 패턴을 적절히 활용함으로써 더 견고하고 효율적인 소프트웨어를 개발할 수 있습니다.

참고 자료 타입스크립트 공식 문서