中介者模式(java版)

1.引入

中介者模式就是使用一个中介对象来封装各个对象之间的交互。由于使用了中介者对象,那么各个对象之间就不用显式地相互引用了,从而解耦。而我们一般都是直接显式地引用,而中介者模式就是多了中介者对象,一切的交互都用中介者对象去实现,就把各个对象之间复杂的交互都搞到中介者对象上去了。

2.举例

在开发中,我们对于数据的管理,可以采用一个中介者对于数据进行管理,而不是直接对原数据操作,譬如要取用户A和用户B的数据,一般我们的策略都是直接new对象,然后去调用取数据的方法,而在中介者模式中,我们对于数据无法显式的调用,而是使用中介者封装之后,通过调用中介者,然后来取数据,实际上我们只需要维护用户A和用户B与中介者之间的交互即可,而不用关心其他的。

3.实现

--3.1抽象中介者:

public interface Mediator {

	public void createUser();
	
	public void getData();
}

--3.2具体中介者:

public class ConcreteMediator implements Mediator{

	private UserA userA;
	private UserB userB;
	
	public UserA getUserA() {
		return userA;
	}

	public void setUserA(UserA userA) {
		this.userA = userA;
	}

	public UserB getUserB() {
		return userB;
	}

	public void setUserB(UserB userB) {
		this.userB = userB;
	}

	@Override
	public void createUser() {
		// TODO Auto-generated method stub
		userA=new UserA(this);
		userB=new UserB(this);
	}

	@Override
	public void getData() {
		// TODO Auto-generated method stub
		userA.getData();
		userB.getData();
	}
}

--3.3.抽象用户类:

public abstract class User {

	private Mediator mediator;

	
	public User(Mediator mediator){
		this.mediator=mediator;
	}
	public Mediator getMediator() {
		return mediator;
	}

	public void setMediator(Mediator mediator) {
		this.mediator = mediator;
	}
	public abstract void getData();
}

--3.4.用户A类:

public class UserA extends User{

	public UserA(Mediator mediator) {
		super(mediator);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void getData() {
		// TODO Auto-generated method stub
		System.out.println("取UserA用户的数据!");
	}
}

--3.5.用户B类:

public class UserB extends User{

	public UserB(Mediator mediator) {
		super(mediator);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void getData() {
		// TODO Auto-generated method stub
		System.out.println("取UserB用户的数据!");
	}
}

测试类:

public static void main(String[] args) {
	Mediator mediator =new ConcreteMediator();
	mediator.createUser();
	mediator.getData();
}
结果:

取UserA用户的数据!
取UserB用户的数据!

----------------------------------------------------------------------------------------------

总结:

中介者模式就是把对象之间的交互进行抽象,然后定义一个中介者,其实也就是将对象的行为转换到中介者与对象的交互,同时也将复杂性转移到了中介者的复杂性上。而中介者模式应用的场景是有一系列对象,然后对象之间的交互却是复杂的时候,就采用中介者模式。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值