内容简介:先看图:有很多孤立的人这里是3个,如果有100个,是不是图很复杂,那在程序中表示出来就很难。明显用右图很明了。中介者模式就是简化这种关系的模式,有两个角色:关系成员、中介者。我一般喜欢从语法上分析:
先看图:
有很多孤立的人这里是3个,如果有100个,是不是图很复杂,那在程序中表示出来就很难。明显用右图很明了。
中介者模式就是简化这种关系的模式,有两个角色:关系成员、中介者。我一般喜欢从语法上分析:
中介者:包含每一个关系成员,要处理所有的关系,就要包含是所有的成员。只有一个方法
abstract class Mediator {
abstract void call(String string, Person person);
}
复制代码
具体中介者:call是处理关系的,主要的方法。
public class AllMediator extends Mediator {
Aperson aperson;
Bperson bperson;
Cperson cperson;
public Aperson getAperson() {
return aperson;
}
public void setAperson(Aperson aperson) {
this.aperson = aperson;
}
public Bperson getBperson() {
return bperson;
}
public void setBperson(Bperson bperson) {
this.bperson = bperson;
}
public Cperson getCperson() {
return cperson;
}
public void setCperson(Cperson cperson) {
this.cperson = cperson;
}
@Override
void call(String string, Person person) {
if (person == aperson) {
aperson.re(string);
} else if (person == bperson) {
bperson.re(string);
} else if (person == cperson) {
cperson.re(string);
}
}
}
复制代码
成员,不必包含与他有关系的成员,他只需包含一个中介者,通过中介发消息,是委托给中介。他有一个发消息的方法,中介通过判定成员来确定恢复消息。
abstract class Person {
String name;
Mediator mediator;
Person(String name, Mediator mediator) {
this.mediator = mediator;
this.name = name;
}
abstract void call(String mess);
abstract void re(String mess);
}
复制代码
A:
public class Aperson extends Person {
Aperson(String name, Mediator mediator) {
super(name, mediator);
}
@Override
void call(String mess) {
mediator.call(mess, this);
}
@Override
void re(String mess) {
System.out.println(name + ":" + mess);
}
}
复制代码
B:
public class Bperson extends Person {
Bperson(String name, Mediator mediator) {
super(name, mediator);
}
@Override
void call(String mess) {
mediator.call(mess, this);
}
@Override
void re(String mess) {
System.out.println(name + ":" + mess);
}
}
复制代码
C:
public class Cperson extends Person {
Cperson(String name, Mediator mediator) {
super(name, mediator);
}
@Override
void call(String mess) {
mediator.call(mess, this);
}
@Override
void re(String mess) {
System.out.println(name + ":" + mess);
}
}
复制代码
测试
class Test {
public static void main(String[] args) {
AllMediator mediator = new AllMediator();
Aperson aperson = new Aperson("A同学", mediator);
Bperson bperson = new Bperson("B同学", mediator);
Cperson cperson = new Cperson("C同学", mediator);
mediator.setAperson(aperson);
mediator.setBperson(bperson);
mediator.setCperson(cperson);
aperson.call("告诉B,我明天不去了");
bperson.call("告诉C,我明天不去了");
}
}
复制代码
结果:
A同学:告诉B,我明天不去了
B同学:告诉C,我明天不去了
note:只要不放弃,就没有什么能让自己退缩;只要够坚强,就没有什么能把自己打垮!
以上所述就是小编给大家介绍的《设计模式(二十三)中介者模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 行为型模式:中介者模式
- 设计模式 | 中介者模式及典型应用
- 《JavaScript设计模式与开发实践》模式篇(11)—— 中介者模式
- 中介者模式【Mediator Pattern】
- 中介者设计模式——业务实践
- 中介者设计模式(Mediator Design Pattern)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
热搜:搜索排名营销大揭秘
【美】肖恩·布拉德利 / 中国人民大学出版社有限公司 / 2018-7-30 / CNY 55.00
首部大数据在我国政府管理场景中的应用实践案例读本,全面展示我国电子政务与数字化建设的成果,深度理解实施国家大数据战略的重要意义。 本书作者作为国内最早从事大数据应用研究的实践者之一,亲历了中国大数据的发展历程、主要事件、应用案例以及行业变化。 在本书中,作者将其所亲历的大数据发展历程进行了阐述,从大数据的基本概念、特点到实践解读,通俗易懂,给我们的实际工作提供了重要参考。作者将帮助读者......一起来看看 《热搜:搜索排名营销大揭秘》 这本书的介绍吧!