您的位置:首页 > 其它

中介者模式

2016-03-03 11:22 423 查看
一、作用:降低类与类之间的耦合程度,当A和B有双向的关系时,就产生了较强的耦合,这时候引入一个中介者的类,A与B都只和这个中介者类相关,由中介者类来控制A与B的关系,这样就完成了解耦。

二、例子:

有两种工人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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: