객체 지향 프로그래밍에서 객체 간의 상호작용은 중요한 요소입니다. 객체들은 서로 연결되어 있으며 다른 객체를 참조하여 작업을 수행합니다. 그러나 객체가 너무 많아지면 서로 꼬일 수 있습니다. 이러한 문제를 해결하기 위해 메디에이터 패턴이 등장했습니다. 메디에이터 패턴은 객체 간의 상호작용을 관리하고 중개하는 디자인 패턴으로, 객체 간의 결합도를 낮출 수 있습니다.
메디에이터 패턴이란 무엇인가?
메디에이터 패턴은 객체 간의 상호작용을 중개하고 관리하기 위한 디자인 패턴입니다. 이 패턴은 객체들이 서로 직접적으로 통신하지 않고, 중개자를 통해 통신하도록 합니다. 이로 인해 객체 간 결합도가 낮아지고, 객체들은 더 유연하고 확장성 있는 디자인을 구현할 수 있습니다.
메디에이터 패턴은 다음과 같은 구성 요소를 포함합니다.
- Mediator(중개자) : 객체 간의 상호작용을 중개하고 관리하는 클래스입니다. 이 클래스는 객체들이 서로 직접적으로 통신하지 않도록 합니다.
- Colleague(동료) : 중개자와 상호작용하는 객체입니다. 이 객체는 중개자와 연결됩니다.
//Mediator
public interface ChatMediator {
public void sendMessage(String message, User user);
public void addUser(User user);
}
// Colleague
public class UserImpl extends User {
public UserImpl(ChatMediator med, String name) {
super(med, name);
}
@Override
public void send(String message) {
System.out.println(this.name+": Sending Message="+message);
mediator.sendMessage(message, this);
}
@Override
public void receive(String message) {
System.out.println(this.name+": Received Message:"+message);
}
}
// ConcreteMediator
public class ChatMediatorImpl implements ChatMediator {
private List users;
public ChatMediatorImpl(){
this.users=new ArrayList();
}
@Override
public void addUser(User user){
this.users.add(user);
}
@Override
public void sendMessage(String msg, User user) {
for(User u : this.users){
if(u != user){
u.receive(msg);
}
}
}
}
객체 간의 상호작용을 효율적으로 관리하는 방법은?
객체 간의 상호작용을 효율적으로 관리하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.
- 중개자 패턴 : 객체 간의 상호작용을 중개하는 디자인 패턴입니다. 중개자 패턴은 객체 간 결합도를 낮추고, 객체들 간의 상호작용을 효율적으로 관리할 수 있습니다.
- 느슨한 결합(Loose coupling) : 객체들 간의 결합도를 낮추는 것이 좋습니다. 객체 간의 결합도가 높을 경우, 한 객체의 변경이 다른 객체에 영향을 미칠 수 있습니다. 이를 방지하기 위해 객체들 간의 결합도를 낮추는 것이 중요합니다.
- 이벤트 기반 프로그래밍(Event-driven programming) : 이벤트 기반 프로그래밍은 객체들 간의 상호작용을 이벤트를 통해 처리합니다. 이벤트 기반 프로그래밍은 객체의 결합도를 낮추며, 객체들 간의 상호작용을 효율적으로 관리할 수 있습니다.
객체 간의 상호작용은 중요한 요소입니다. 객체들은 서로 연결되어 있으며 다른 객체를 참조하여 작업을 수행합니다. 메디에이터 패턴은 객체 간의 상호작용을 관리하고 중개하는 디자인 패턴으로, 객체 간의 결합도를 낮출 수 있습니다. 이 패턴을 사용하면 객체들은 더 유연하고 확장성 있는 디자인을 구현할 수 있습니다.
Reference : Mediator Pattern: 객체 간의 상호작용을 중개하고 관리하기 위한 디자인 패턴
'개발' 카테고리의 다른 글
State Pattern: 객체의 상태를 캡슐화하고 상태 전환을 관리하기 위한 디자인 패턴 (0) | 2023.04.06 |
---|---|
Memento Pattern: 객체 상태의 저장과 복원을 위한 디자인 패턴 (0) | 2023.04.06 |
Iterator Pattern: 컬렉션 요소에 접근하는 방식을 일관성 있게 관리하기 (0) | 2023.04.06 |
Interpreter Pattern: 언어나 문법을 해석하고 실행하기 위한 디자인 패턴 (0) | 2023.04.06 |
Command Pattern: 요청과 실행을 분리하여 유연하고 확장 가능한 코드 작성하기 (0) | 2023.04.06 |