现在的位置: 首页 > 综合 > 正文

Java设计模式菜鸟系列(二十二)中介者模式建模与实现

2019年04月19日 ⁄ 综合 ⁄ 共 1509字 ⁄ 字号 评论关闭

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109


中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。

一、uml建模:

二、代码实现

/**
 * 中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话,
 * 
 * 不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。
 * 
 * 示例:下面以房屋(出租)中介为例
 */
interface Mediator {
	void createMediator();

	void recommendHouse();
}

/**
 * 咱(User)让中介帮我们推荐房子
 * 
 * 所以咱需要持有一个中介实例
 */
abstract class User {
	private Mediator mediator;

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

	public Mediator getMediator() {
		return mediator;
	}

	public abstract void selectHouse();
}

class ZhangSan extends User {

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

	@Override
	public void selectHouse() {
		System.out.println("张三在选房子...");
	}
}

class LiSi extends User {

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

	@Override
	public void selectHouse() {
		System.out.println("李四在选房子...");
	}
}

/**
 * 房屋中介:中介向要找房子的那些人推荐房子,由他们选择自己想要的房子。
 * 
 * 因此中介得持有那些实例,才有可能把房子租出去。
 */
class MyMediator implements Mediator {
	private User zhangsan;
	private User lisi;

	public User getZhangsan() {
		return zhangsan;
	}

	public User getLisi() {
		return lisi;
	}

	@Override
	public void createMediator() {
		zhangsan = new ZhangSan(this);
		lisi = new LiSi(this);
	}

	/**
	 * 中介向要找房子的那些人推荐房子,由他们选择自己想要的房子
	 */
	@Override
	public void recommendHouse() {
		zhangsan.selectHouse();
		lisi.selectHouse();
	}
}

/**
 * 客户端测试类
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		Mediator mediator = new MyMediator();
		mediator.createMediator();
		mediator.recommendHouse();
	}
}

三、总结

中介者模式只需关心和Mediator类的关系,具体类与类之间的关系及调用交给Mediator就行。

抱歉!评论已关闭.