반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
13주차. Mediator 본문
728x90
반응형
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다.
틀린 부분은 알려주시면 감사하겠습니다.
어떤 패턴인가
한 집합에 속해있는 객체의 상호작용을 캡슐화하는 객체를 정의합니다.
객체들이 직접 서로를 참조하지 않도록 하여 객체 사이의 소결합(loose coupling)을 촉진시키며, 개발자가 객체의 상호작용을 독립적으로 다양화시킬 수 있게 만듭니다.
어떻게 쓰는가
Mediator: Colleague 객체와 교류하는 데 필요한 인터페이스를 정의합니다.
ConcreteMediator: Colleague 객체와 조화를 이뤄서 협력 행동을 구현하며, 자신이 맡을 동료(colleague)를 파악하고 관리합니다.
Colleagues: 자신의 중재자 객체가 무엇인지 파악합니다.
class Users:
def __init__(self):
self.users = []
def add_user(self, user):
self.users.append(user)
def del_user(self, user):
self.users.remove(user)
def send_msg(self, msg, user):
print('message to user ' + user.name + ': ' + msg)
class Person:
def __init__(self, mediator, name):
self.mediator = mediator
self.name = name
def send(self, msg):
self.mediator.send_msg(msg, self)
-----------------------------------------------------------------
users = Users()
p1 = Person(users, 'a')
p2 = Person(users, 'b')
users.add_user(p1)
users.add_user(p2)
p1.send('Hi') # 'message to user a: Hi'
ysers.del_user(p2)
어디서 활용되는가
이는 책의 내용 (p. 362)을 그대로 가져왔다.
1. 여러 객체가 잘 정의된 형태이기는 하지만 복잡한 상호작용을 가질 때.
2. 한 객체가 다른 객체를 너무 많이 참조하고, 너무 많은 의사소통을 수행해서 그 객체를 재사용하기 힘들 때
3. 여러 클래스에 분산된 행동들이 상속 없이 상황에 맞게 수정되어야 할 때
My Opinion
간단히 말하면, 참조가 많아지거나 상호작용이 많아질 때 이 mediator 패턴을 사용하면 간단하게 코딩할 수 있다.하지만 mediator 객체에 너무 많은 권한을 주면 오히려 좋지 않을 수 있으니, 이 부분에 유의해서 사용하는 것이 좋다.
728x90
반응형
'스터디 > 디자인 패턴' 카테고리의 다른 글
14주차-2. Bridge (0) | 2021.09.23 |
---|---|
14주차-1. Observer (0) | 2021.09.23 |
12주차. Facade (0) | 2021.08.18 |
11주차. Builder (0) | 2021.08.11 |
10주차. Memento (0) | 2021.07.28 |
Comments