内容简介:先看图:有很多孤立的人这里是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:只要不放弃,就没有什么能让自己退缩;只要够坚强,就没有什么能把自己打垮!
以上所述就是小编给大家介绍的《设计模式(二十三)中介者模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大数据系统构建
Nathan Marz、James Warren / 马延辉、向磊、魏东琦 / 机械工业出版社 / 2017-1 / 79.00
随着社交网络、网络分析和智能型电子商务的兴起,传统的数据库系统显然已无法满足海量数据的管理需求。 作为一种新的处理模式,大数据系统应运而生,它使用多台机器并行工作,能够对海量数据进行存储、处理、分析,进而帮助用户从中提取对优化流程、实现高增长率的有用信息,做更为精准有效的决策。 但不可忽略的是,它也引入了大多数开发者并不熟悉的、困扰传统架构的复杂性问题。 本书将教你充分利用集群硬件优势的La......一起来看看 《大数据系统构建》 这本书的介绍吧!