博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中介者模式(Mediator)
阅读量:7094 次
发布时间:2019-06-28

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

hot3.png

中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。先看看图:

095430_ntOd_2335739.png

User类统一接口,User1和User2分别是不同的对象,二者之间有关联,如果不采用中介者模式,则需要二者相互持有引用,这样二者的耦合度很高,为了解耦,引入了Mediator类,提供统一接口,MyMediator为其实现类,里面持有User1和User2的实例,用来实现对User1和User2的控制。这样User1和User2两个对象相互独立,他们只需要保持好和Mediator之间的关系就行,剩下的全由MyMediator类来维护!基本实现:

public abstract class User {	private Mediator mediator;	public abstract void   work();		public Mediator getMediator(){		return mediator;	}		public  User(Mediator mediator)	{		this.mediator=mediator;	}	}
public class User1 extends User{	public User1(Mediator mediator) {		super(mediator);		// TODO Auto-generated constructor stub	}	@Override	public void work() {		// TODO Auto-generated method stub		System.out.println("user1 exe!!");	}	}
public class User2 extends User{	public User2(Mediator mediator) {		super(mediator);		// TODO Auto-generated constructor stub	}	@Override	public void work() {		// TODO Auto-generated method stub		System.out.println("user2 exe!!");	}	}
public interface Mediator { public void createMediator(); public void workAll();}
public class MyMediator implements Mediator {	private User1 user1;	private User2 user2;	public User getUser1() {		return user1;	}	public User getUser2() {		return user2;	}	@Override	public void createMediator() {		user1 = new User1(this);		user2 = new User2(this);	}	@Override	public void workAll() {		user1.work();		user2.work();	}}

测试类:

public class Test {	public static void main(String[] args) {		// TODO Auto-generated method stub		Mediator mediator=new MyMediator();		mediator.createMediator();		mediator.workAll();	}}

测试结果:

user1 exe!!

user2 exe!!

转载于:https://my.oschina.net/carbenson/blog/505732

你可能感兴趣的文章
zw版【转发·台湾nvp系列Delphi例程】HALCON HWindowX 01
查看>>
POJ2421 Constructing Roads
查看>>
在服务器上安装MongoDB
查看>>
20140104
查看>>
并发编程路线
查看>>
规则(1)
查看>>
自动焊接过程概述
查看>>
0103 最短Hamilton路径【状压DP】
查看>>
CF1025B Weakened Common Divisor【数论/GCD/思维】
查看>>
ajax格式,转入后台
查看>>
oracle 反向索引
查看>>
物理地址扩展PAE
查看>>
Promise
查看>>
C#编写数学集合
查看>>
利用MVC Chart 打造后台图表、前端图表(转)
查看>>
【Java】使用CSVUtils生成文件并供下载
查看>>
用户态和内核态
查看>>
VR+生物plus 遐想
查看>>
Java并发编程:线程控制
查看>>
今天聊一聊Java引用类型的强制类型转换
查看>>