中介者模式(Mediator Pattern)
这里笔者完全参考了:http://www.runoob.com/design-pattern/mediator-pattern.html,案例精简清晰,直指核心-中介对象。多处直接转载,特此说明。
定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象, 同时做出相应的处理。
uml:
代码:
1、中介者对象:
package com.pat.mediator; /** * 中介者对象 * 使用此对象封装对象的交互 * @author ZX */ public class ChatRoom { public static void sendMsg(User user,String msg) { System.out.println(user.getName()+":"+msg); } }
2、用户对象:
package com.pat.mediator; /** * 中介所关联的对象 * @author ZX */ public class User { //用户名称 private String name; //发送消息 public void sendMsg(String msg) { ChatRoom.sendMsg(this, msg); } //getset public String getName() { return name; } public void setName(String name) { this.name = name; } //构造防范 public User() { } public User(String name) { super(); this.name = name; } }
3、测试类:
package com.pat.mediator; public class Test { public static void main(String[] args) { User tom = new User("tom"); User jack = new User("jack"); User rose = new User("rose"); tom.sendMsg("rose!marry me!"); jack.sendMsg("marry me!"); rose.sendMsg("get out!"); } }