애플리케이션에 클래스가 많아지면 클래스간의 관계도 증가한다.
적절한 수준에서는 괜찮지만 수가 많아질수록 복잡도가 증가하기 때문에 새로 생긴 클래스와 기존 클래스간 관계를 형성하기 위해 많은 클래스들을 돌아다녀야 한다.
이렇게 클래스 간의 관계에 의한 복잡도를 완화하기 위해서는 중앙에서 통제역할을 해주는 클래스가 필요하다.
즉, 한 클래스에서 각 클래스들의 객체를 보유하고 기능단위로 호출을 통해 사용하도록 구성하는 것이다.
이러한 방법을 디자인패턴으로 설명한 것이 중재자 패턴이다.
MVC 패턴의 컨트롤러가 모델과 뷰 사이에서 중재자와 유사한 역할을 수행한다.
클래스 구조는 Mediator
인터페이스의 구현체에서 다수의 객체들을 보유하는 형태가 된다.
sender
, 즉 Mediator
구현체가 보유한 객체들에서 notify()
를 호출하면 그에 걸맞는 동작이 Mediator
구현체에서 동작한다.
이때, 각 객체들간 직접적인 호출이 없어야한다.
Mediator
구현체에서는 notify()
호출을 받게되면 sender
정보를 바탕으로 어떤 객체와의 상호작용이 필요한지를 판단한다.
주의해야할 부분은 Mediator
구현체에 너무 많은 객체들을 포함시키면 안된다는 점이다.
객체들이 증가하면 처리해야할 작업이 많아지게되고 오히려 코드복잡도가 높아지는 문제가 생긴다.