码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-10-13 02:03:38      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:java设计模式   uml   架构   设计模式   模式   

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


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

一、uml建模:

bubuko.com,布布扣


二、代码实现

/**
 * 中介者模式(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就行。


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

标签:java设计模式   uml   架构   设计模式   模式   

原文地址:http://blog.csdn.net/lhy_ycu/article/details/40027109

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!