중재자 패턴
중재자 패턴(Mediator Pattern)은 소프트웨어 디자인 패턴 중 하나로, 객체 간의 복잡한 상호작용을 중앙 집중화된 중재자 객체를 통해 관리하는 방식입니다. 객체들이 직접 서로 통신하는 대신, 중재자를 통해 간접적으로 통신함으로써 객체 간의 결합도를 낮추고 시스템의 유지보수성을 향상시키는 데 목적이 있습니다.
개요
중재자 패턴은 객체 간의 관계가 복잡하게 얽혀 있어 서로 의존성이 높아지는 상황에서 유용합니다. 이 패턴을 사용하면 각 객체는 자신의 역할에만 집중하고, 다른 객체와의 상호작용은 중재자에게 위임할 수 있습니다. 이를 통해 객체 간의 결합도를 낮추고 변경 사항이 발생했을 때 영향을 받는 범위를 최소화할 수 있습니다.
구성 요소
- 중재자(Mediator): 객체 간의 통신을 정의하는 인터페이스입니다.
- 구체적인 중재자(Concrete Mediator): 중재자 인터페이스를 구현하며, 객체 간의 통신을 중재하는 역할을 수행합니다. 객체들의 상태를 관리하고, 필요한 경우 다른 객체에게 알림을 보냅니다.
- 동료(Colleague): 중재자와 통신하는 객체입니다. 동료 객체는 중재자를 통해 다른 동료 객체와 상호작용합니다.
동작 방식
- 동료 객체는 중재자에게 특정 이벤트나 상태 변화를 알립니다.
- 중재자는 이 정보를 기반으로 다른 동료 객체에게 필요한 알림을 보냅니다.
- 각 동료 객체는 중재자로부터 받은 알림에 따라 자신의 상태를 업데이트하거나 특정 동작을 수행합니다.
장점
- 결합도 감소: 객체 간의 직접적인 의존성을 줄여 시스템의 결합도를 낮춥니다.
- 재사용성 향상: 객체가 특정 환경에 의존하지 않으므로 재사용성이 높아집니다.
- 유지보수 용이: 객체 간의 관계가 중재자에 의해 관리되므로 변경 사항 발생 시 영향을 받는 범위를 최소화할 수 있습니다.
- 단일 책임 원칙 준수: 각 객체는 자신의 역할에만 집중할 수 있도록 하여 단일 책임 원칙을 준수합니다.
단점
- 중재자의 복잡성 증가: 객체 간의 상호작용 로직이 중재자에 집중되면서 중재자가 복잡해질 수 있습니다.
- 확장성 문제: 새로운 객체를 추가하거나 상호작용 방식을 변경할 때 중재자를 수정해야 할 수 있습니다.
활용 예시
- 채팅 애플리케이션: 여러 사용자가 메시지를 주고받는 채팅 애플리케이션에서 중재자는 각 사용자의 메시지를 다른 사용자에게 전달하는 역할을 수행합니다.
- 항공 교통 관제 시스템: 항공 교통 관제 시스템에서 중재자는 각 항공기의 위치와 상태를 관리하고, 충돌을 방지하기 위해 필요한 정보를 항공기에게 전달합니다.
- GUI 프레임워크: GUI 프레임워크에서 중재자는 여러 UI 컴포넌트 간의 상호작용을 관리합니다. 예를 들어, 버튼 클릭 이벤트가 발생했을 때 다른 컴포넌트의 상태를 변경하는 등의 동작을 중재자가 처리할 수 있습니다.