中介者模式(Mediator Pattern)
2014-02-10 11:57
239 查看
中介者模式又称调停者模式,属行为模式。
用一个中介者来封装多个对象之间负责的交互行为,中介者对象使各交互对象之间不需显示的声明相互引用,从而使对象之间松耦合,而且可以独立的改变他们之间的交互行为。
角色分析:
Mediator(抽象中介者):
定义同事类之间的通讯接口。
ConcreteMediator(具体中介者):
实现同事类之间的通讯接口,并维护它对各个同事类的引用。
Colleague(抽象同事类):
定义同事类的公共方法
ConcreteColleague(具体同事类):
具体同事类为抽象同事类的子类,每一个同事类都会引用一个中介者对象,同事类之间的通讯,先告知中介者,由中介者完成通讯过程。
使用场景:
1、多个对象之间存现相互的引用。
2、一个对象对多个对象之间有通信,可将通信行为放入中介者,从而将那个对象独立出来。
例:网上简易聊天室
package mediator; /** *create by datao.wang 2014-2-10-上午10:40:32 *抽象中介者 聊天房间 */ public abstract class AbstractChatroom { //注册成员 public abstract void regiser(Member member); //发送消息 public abstract void sendText(String from,String to,String message); } package mediator; import java.util.HashMap; import java.util.Map; /** *create by datao.wang 2014-2-10-上午10:45:57 *具体中介者 */ public class Chatroom extends AbstractChatroom { //引用同事对象 private Map<String,Member> map=new HashMap<String,Member>(); @Override public void regiser(Member member) { if(map.get(member.getName())==null){ map.put(member.getName(),member); } } @Override public void sendText(String from,String to,String message) { Member member=map.get(to); if(member!=null){ member.receiveMessage(from,message); } } } package mediator; /** *create by datao.wang 2014-2-10-上午10:48:58 * 抽象同事角色 */ public abstract class Member { //对中介者的引用 public AbstractChatroom chatroom; public String name; public abstract void receiveMessage(String from,String message); public abstract void sendMessage(String to,String message); public AbstractChatroom getChatroom() { return chatroom; } public void setChatroom(AbstractChatroom chatroom) { this.chatroom = chatroom; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package mediator; /** *create by datao.wang 2014-2-10-上午11:11:12 *具体同事角色 */ public class ConcreteMember extends Member { public ConcreteMember(String name){ this.name=name; } @Override public void receiveMessage(String from, String message) { System.out.println(message+"----------------------"); } @Override public void sendMessage(String to, String message) { this.chatroom.sendText(this.getName(), to, message); } }
相关文章推荐
- 设计模式------中介者模式(Mediator Pattern)
- 中介者模式 Mediator Pattern
- 深入浅出设计模式——中介者模式(Mediator Pattern)
- "围观"设计模式(25)--行为型之中介者模式(Mediator Pattern)
- 设计模式21 - 中介者模式【【Mediator Pattern】
- 23种设计模式----中介者模式(Mediator Pattern)
- 设计模式系列5-----C++实现中介者模式(Mediator Pattern)
- 设计模式笔记21:中介者模式(Mediator Pattern)
- 设计模式之中介者模式---Mediator Pattern
- 中介者模式(Mediator Pattern)
- .NET设计模式(20):中介者模式(Mediator pattern)
- 设计模式——行为型模式之通过中介者模式(Mediator Pattern)实现各模块之间的解耦(二)
- 中介者模式(Mediator Pattern)
- Java设计模式——中介者模式(Mediator Pattern)
- 中介者模式(Mediator pattern)
- Java设计模式之中介者模式(Mediator Pattern)简介
- Java中介者模式(Mediator Pattern)
- 设计模式(行为型)之中介者模式(Mediator Pattern)
- 第17章 中介者模式(Mediator Pattern)
- Mediator Pattern-中介者模式