개발을 하던 와중에 메신저와 메시지에 대해 알게 되었다.

 

메신저와 메시지란 ?

메신저를 통해서 메시지를 보내서 객체에 정보를 전달해주는 방식

 

중재자 패턴

객체 간의 복잡한 상호작용을 캡슐화하여 중재자 객체에 위임하는 패턴

ex ) 객체 -(해줘)- 중재자 -(전달)- 객체 

ex ) 채팅 애플리케이션에서 사용자 간 메시지 교환

구조:
Mediator: 객체 간 통신을 관리하는 인터페이스
ConcreteMediator: Mediator 인터페이스를 구현한 클래스
Colleague: 중재자와 통신하는 객체들의 인터페이스
ConcreteColleague: Colleague 인터페이스를 구현한 클래스들

옵저버 패턴

객체의 상태 변화를 관찰하는 관찰자들을 객체에 등록하고, 상태 변화가 있을 때마다 객체가 관찰자들에게 통지하는 패턴

ex ) 객체 -(상태변함)- 관찰자

ex ) GUI 이벤트 처리 (버튼 클릭 등)

구조:
Subject (Observable): 관찰 대상 객체
Observer: 상태 변화를 감지하는 관찰자 인터페이스
ConcreteObserver: Observer 인터페이스를 구현한 실제 관찰자 클래스

퍼사드 패턴

복잡한 시스템에 대해 간단한 인터페이스를 제공하는 패턴

ex ) 객체 - 인터페이스 - 복잡한 구현

구조:
Facade: 복잡한 시스템에 대한 단순화된 인터페이스를 제공하는 클래스
Subsystem classes: 복잡한 시스템을 구성하는 여러 클래스들

 

 

패턴 간 비교

목적:
중재자: 객체 간 복잡한 상호작용을 단순화
옵저버: 객체의 상태 변화를 다른 객체들에게 자동으로 알림
퍼사드: 복잡한 시스템에 대한 간단한 인터페이스 제공


통신 방향:
중재자: 양방향 통신 (M:N → M:1:N)
옵저버: 단방향 통신 (1:N)
퍼사드: 단방향 통신 (클라이언트 → 시스템)

 

결합도:
모든 패턴이 객체 간 결합도를 낮추는 데 기여하지만, 중재자 패턴이 가장 효과적으로 결합도를 낮춥니다.

 

확장성:
중재자: 새로운 Colleague 추가가 쉬움
옵저버: 새로운 Observer 추가가 쉬움
퍼사드: 시스템 변경 시 Facade만 수정하면 됨


복잡성:
중재자: 중재자 객체가 복잡해질 수 있음
옵저버: 구현이 비교적 간단함
퍼사드: 구현이 간단하지만 시스템 전체를 이해해야 함

 

패턴의 동작을 안다고 해도 구현은 자유롭게 할 수 있다는 점을 유의!

패턴을 그대로 구현하는 것보다 상황에 맞게 유연한 코드를 작성하고 코드 규칙에 맞게 구현하자

'개인 공부 > 인턴' 카테고리의 다른 글

C# 패턴 참고 자료  (3) 2024.12.18
패턴과 구조  (1) 2024.12.15
UDP 통신 참고 자료  (1) 2024.12.12
MVVM Light  (0) 2024.12.09
클래스 다이어그램  (0) 2024.12.02

+ Recent posts