欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-01 10:33:32
...

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

 

 

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

一、uml建模:

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

 

二、代码实现

 

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