内容简介:先看图:有很多孤立的人这里是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)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
爆款:如何打造超级IP
【美】安妮塔•埃尔伯斯 / 杨雨 / 中信出版社 / 2016-1-10 / 49
哈佛商学院IP运营与产品管理方法论第一书,翻转长尾理论的重要著作! 电影大片、当红炸子鸡、百万畅销书背后的运营逻辑是什么? 《五十度灰》、Lady Gaga、维多利亚的秘密有何共同秘密? 漫威如何将蜘蛛侠、X战警、绿巨人打造成金矿? 皇马如何打造体育IP,一跃成为全球收 入最高的足球俱乐部? 爆款策略如何运用于电影、电视、音乐、出版、体育与商业各领域? ----......一起来看看 《爆款:如何打造超级IP》 这本书的介绍吧!