개발을 하던 와중에 메신저와 메시지에 대해 알게 되었다.
메신저와 메시지란 ?
메신저를 통해서 메시지를 보내서 객체에 정보를 전달해주는 방식
중재자 패턴
객체 간의 복잡한 상호작용을 캡슐화하여 중재자 객체에 위임하는 패턴
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 |