菜鸟硕枫设计模式系列之18 中介者模式
发布日期:2021-10-01 08:45:13 浏览次数:2 分类:技术文章

本文共 2856 字,大约阅读时间需要 9 分钟。

中介者模式,”中介者“,即在一系列系统交互的过程中,通过第三方的办法使得这些系统不用直接交互,都通过中介来进行。这里简化了系统的关系,但是有可能使得中介成为系统的交互瓶颈。
中介者模式类图:
[img]http://dl.iteye.com/upload/attachment/364831/7c2f273b-1739-35f0-ab6f-0aa7cbb44013.jpg[/img]
具体实现示例:
package mediatorPattern; public abstract class Person {
private String name; private String hobby; private Mediator mediator; public Person(String name,String hobby,Mediator mediator){
this.setName(name); this.setHobby(hobby); this.setMediator(mediator); } public void setName(String name) {
this.name = name; } public String getName() {
return name; } public void setHobby(String hobby) {
this.hobby = hobby; } public String getHobby() {
return hobby; } public void setMediator(Mediator mediator) {
this.mediator = mediator; } public Mediator getMediator() {
return mediator; } public abstract void getPair(Person person); }
package mediatorPattern; public class Man extends Person{
public Man(String name, String hobby, Mediator mediator) {
super(name, hobby, mediator); // TODO Auto-generated constructor stub } @Override public void getPair(Person person) {
this.getMediator().setMan(this); this.getMediator().getPair(person); } }
package mediatorPattern; public class Woman extends Person{
public Woman(String name, String hobby, Mediator mediator) {
super(name, hobby, mediator); // TODO Auto-generated constructor stub } @Override public void getPair(Person person) {
// TODO Auto-generated method stub this.getMediator().setWoman(this); this.getMediator().getPair(person); } }
中介类:
package mediatorPattern; public class Mediator {
private Man man; private Woman woman; public void setMan(Man man) {
this.man = man; } public Man getMan() {
return man; } public void setWoman(Woman woman) {
this.woman = woman; } public Woman getWoman() {
return woman; } public void getPair(Person person){
if(person instanceof Man) this.setMan((Man)person); else this.setWoman((Woman)person); if(man!=null&&woman!=null&&(woman.getHobby().equals(man.getHobby()))){
System.out.println("A wonderful pair"); }else if(man!=null&&woman!=null){
System.out.println("A just so so pair"); }else{
System.out.println("Just gays haha"); } } }
测试类:
package mediatorPattern; public class MediatorPatternTest {
public static void main(String[]args){
Mediator mediator = new Mediator(); Man man = new Man("lxy","basketball",mediator); Woman woman = new Woman("who?","basketball",mediator); Man shuofeng = new Man("shuofeng","football",mediator); man.getPair(shuofeng); man.getPair(woman); shuofeng.getPair(woman); System.out.println("-----------------"); woman.getPair(man); woman.getPair(shuofeng); } }
说明:man 和 woman通过mediator去gerPair,使得Man和Woman不直接发生关系,这样两个类就在业务上分离了,这是最少知识原则的又一体现,和代理模式有着异曲同工之妙。

转载地址:https://blog.csdn.net/iteye_2655/article/details/81970494 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:菜鸟硕枫设计模式系列之19 备忘录模式
下一篇:菜鸟硕枫设计模式系列之17 迭代器模式

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月01日 10时17分43秒