设计模式(十五)------23种设计模式(7):中介者模式
来源:互联网 发布:北京汽车美容软件 编辑:程序博客网 时间:2024/06/02 05:09
使用频率:★★★☆☆
一、什么是中介者模式
对象之间通过中介者对象进行交互,而不是直接交互;
二、补充说明
对紧密关联的各个对象解耦;
典型例子:QQ群,聊天室;
三、角色
抽象中介者
具体中介者
抽象对象
具体对象
四、例子,JAVA实现
例子说明,一个网络聊天室
抽象中介者
package com.pichen.dp.behavioralpattern.mediator;import java.util.ArrayList;import java.util.List;public abstract class Mediator { protected List<User> userList; public Mediator() { userList = new ArrayList<User>(); } public void addUser(User user){ user.setMediator(this); this.userList.add(user); } public abstract void operation(User user, String msg);}
具体中介者
package com.pichen.dp.behavioralpattern.mediator;public class ChatRoomMediator extends Mediator { @Override public void operation(User user, String msg) { System.out.println(user.getName() + "send a msg : " + msg); for(User userTmp : this.userList){ userTmp.getMessage(msg); } }}
抽象对象
package com.pichen.dp.behavioralpattern.mediator;public abstract class User { protected Mediator mediator; protected String name; public User(String name) { this.name = name; } protected void setMediator(Mediator mediator){ this.mediator = mediator; } protected abstract void sendMessage(String msg); protected abstract void getMessage(String msg); public String getName() { return name; } public void setName(String name) { this.name = name; }}
具体对象
package com.pichen.dp.behavioralpattern.mediator;public class CommonUser extends User{ public CommonUser(String name) { super(name); } @Override protected void sendMessage(String msg) { this.mediator.operation(this, msg); } @Override protected void getMessage(String msg) { System.out.println(this.getName() + " get msg:"+msg); } }
package com.pichen.dp.behavioralpattern.mediator;public class VIPUser extends User{ public VIPUser(String name) { super(name); } @Override protected void sendMessage(String msg) { this.mediator.operation(this, msg); } @Override protected void getMessage(String msg) { System.out.println(this.getName() + " get msg:"+msg); }}
客户端
package com.pichen.dp.behavioralpattern.mediator;public class Main { public static void main(String[] args) { CommonUser user1 = new CommonUser("小王"); CommonUser user2 = new CommonUser("小陈"); VIPUser vipUser = new VIPUser("小张"); Mediator chatRoom = new ChatRoomMediator(); chatRoom.addUser(user1); chatRoom.addUser(user2); chatRoom.addUser(vipUser); user2.sendMessage("hello everybody~"); }}
执行结果
小陈send a msg : hello everybody~小王 get msg:hello everybody~小陈 get msg:hello everybody~小张 get msg:hello everybody~
@Author 风一样的码农
@HomePageUrl http://www.cnblogs.com/chenpi/
@Copyright 转载请注明出处,谢谢~
阅读全文
0 0
- 设计模式(十五)------23种设计模式(7):中介者模式
- 大话设计模式二十五:中介者模式(mediator)
- 设计模式学习(十五):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- Html5中标签(包括新增常用)
- Android recyclerView的应用
- Picasso 加载网络图片
- oracle,split 分区 sql
- Oracle查看连接数
- 设计模式(十五)------23种设计模式(7):中介者模式
- 分答项目_知识点_AMD规范及js加载器
- c++单例模式析构函数的调用
- 查看CentOS系统版本和位数的方法
- 关于sql 查询时的 字段拼接
- Android 根据首字母给城市排序
- 震惊心酸!月薪5千就是低薪人士?
- 获取EasyUI的treegrid的checkbox所有已勾选的数据
- solr学习日记···简单介绍