Mediator中介者模式/调停者模式-设计模式

目录

1、概述

2、代码


1、概述

如果,系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解。

那么可以通过新增一个中介者类,将一对多的关系变成一对一的关系,让其他类都只和这个中介者类打交道,降低程序的复杂度。

缺点在于,中介者如果过多,会导致程序复杂。

中介者模式具体的应用有聊天室、消息队列等。

 

2、代码

我们可以考虑一个学习群的场景,每个用户与其他用户在群内交流,都只需和中介类打交道,而不需要具体考虑如何把信息发送到其他用户。

 

package behavioral.mediator;

import java.util.Date;

public class StudyGroup {
	
	public static void showMessage(User user,String message) {
		System.out.println(new Date().toString()+" ["+user.getName()+"] :"+message);
	}

}
package behavioral.mediator;

public class User {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public User(String name) {
		this.name=name;
	}
	
	public void sendMessage(String message) {
		StudyGroup.showMessage(this, message);
	}
}
package behavioral.mediator;

public class Test {
	public static void main(String[] args) {
		User tom = new User("Tom");
		User jack = new User("jack");
		tom.sendMessage("hello,everyone!");
		jack.sendMessage("hi,Tom!");
	}

}

https://github.com/phs999/DesignPatterns/tree/35436e83f8eb0664abe5503637ed130321194890/design_pattern/src/behavioral/mediator

 

此外,在jdk源码中,我们也可以看到中介者模式的使用。比如java.util.Timer类中的sched方法,就是中介者的核心方法,实现了多个task的协调与解耦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值