中介者模式
2016-03-03 11:22
423 查看
一、作用:降低类与类之间的耦合程度,当A和B有双向的关系时,就产生了较强的耦合,这时候引入一个中介者的类,A与B都只和这个中介者类相关,由中介者类来控制A与B的关系,这样就完成了解耦。
二、例子:
有两种工人workera 和workerb,他们需要一起工作,如果不使用中介者模式,那么就需要两个类,WorkerA和WorkerB,他们之间相互依赖。使用中介者模式时,如下:
先定义一个抽象工作类:
WorkerA:
WorkerB:
IMediator接口:
Mediator实现类:
测试类:
运行结果:
worka is working!
workb is working
二、例子:
有两种工人workera 和workerb,他们需要一起工作,如果不使用中介者模式,那么就需要两个类,WorkerA和WorkerB,他们之间相互依赖。使用中介者模式时,如下:
先定义一个抽象工作类:
public abstract class AbstractWorker { IMediator mediator ; public AbstractWorker(IMediator mediator) { this.mediator = mediator ; } abstract void work(); }
WorkerA:
public class WorkerA extends AbstractWorker { public WorkerA(IMediator mediator) { super(mediator); } @Override void work() { System.out.println("worka is working!"); } }
WorkerB:
public class WorkerB extends AbstractWorker{ public WorkerB(IMediator mediator) { super(mediator); } @Override void work() { System.out.println("workb is working"); } }
IMediator接口:
public abstract class AbstractWorker { IMediator mediator ; public AbstractWorker(IMediator mediator) { this.mediator = mediator ; } abstract void work(); }
Mediator实现类:
public class Mediator implements IMediator{ private WorkerA workera ; private WorkerB workerb ; @Override public void createWorkers(WorkerA workerA,WorkerB workerB) { this.workera = workerA ; this.workerb = workerB ; } @Override public void beginWork() { this.workera.work(); this.workerb.work(); } }
测试类:
public class Test { public static void main(String[] args) { IMediator mediator = new Mediator(); WorkerA workerA = new WorkerA(mediator); WorkerB workerB = new WorkerB(mediator); mediator.createWorkers(workerA, workerB); mediator.beginWork(); } }
运行结果:
worka is working!
workb is working
相关文章推荐
- 自适应插件windows Resizer
- iOS拨打电话方法(3种)
- Runtime那些事儿(消息机制)
- 渗透测试抓包神器Burp Suite,无需输入 license key
- 网络编程socket之bind、Listen 及 accept
- js url.slice(star,end) url.lastIndexOf('/') + 1, -4
- 如何在同一系统中启动多个 TOMCAT
- 谷歌浏览器地址栏下拉框里的历史记录删不掉
- sed n/N使用说明
- 5.10
- Linux音视频(液晶硬件参数获取)
- Swift2.0(10)闭包
- Android程序开发中单选按钮(RadioGroup)的使用详解
- keepalived 各配置项和术语说明
- Java基于UDP协议的简单通讯实例
- 5.9
- json-c API总结
- Outlook PST异常修复
- 获取系统当前时间(包含时分秒)并入库
- 80.Which two statements are true regarding working with dates? (Choose two.)