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

转载请注明出处: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就行。

时间: 2024-08-25 16:32:44

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

Java设计模式菜鸟系列总结及博客全目录

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40031567 今天来对这23种设计模式做个总结.咱使用设计模式的目的是为了可重用代码.让代码更容易被他人理解.保证代码可靠性,当然设计模式并不是万能的,项目中的实际问题还有具体分析.咱不能为了使用设计模式而使用,而是在分析问题的过程中,想到使用某种设计模式能达到咱需要的效果,而且比不使用设计模式更有优势,那么咱该考虑使用设计模式了. 一.设计模式的一般分类 创建型(Creator)模式(

Java设计模式菜鸟系列(二十)解释器模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40019829 解释器模式(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值.一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄. 一.uml建模: 二.代码实现 /** * 解释器模式(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值. * * 一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄. * * 示例:

Java设计模式菜鸟系列(二十三)访问者模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40028509 访问者模式(Visitor):把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化.访问者模式适用于数据结构相对稳定而算法又容易变化的系统.访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者:而它的缺点就是增加新的数据结构很困难. 一.uml建模: 二.代码实现 /** * 访问者模式(Visitor):把数据结构和作用于结构上的操作解耦合,使

Java设计模式菜鸟系列(十九)备忘录模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40018967 备忘录模式(Memento): 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象. 一.uml建模: 二.代码实现 /** * 备忘录模式(Memento):主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象 * * 示例:原始类--> 创建.恢复备忘录 */ class Original { private String state; public Or

Java设计模式菜鸟系列(一)策略模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天开始咱们来谈谈Java设计模式.这里会结合uml图形来讲解,有对uml建模不熟的可以参考我的另一篇博文uml建模. 首先,个人觉得模式的设计就是一个将变化的东西和不变(稳定)的东西分离的过程.咱们的应用中可能有很多需要改变的地方,而模式要做的就是把它们"抽取"出来并进行"封装"和"实现",因此更多的时候咱们是面向接口编程

Java设计模式菜鸟系列(十七)桥接模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40008711 桥接模式(Bridge): 把事物和其具体实现分开(抽象化与实现化解耦),使他们可以各自独立的变化.假设你的电脑是双系统(WinXP.Win7),而且都安装了mysql.oracle.sqlserver.DB2这4种数据库,那么你有2*4种选择去连接数据库.按平常的写法,咱要写2*4个类,但是使用了桥接模式,你只需写2+4个类,可以看出桥接模式其实就是一种将N*M转化成N+

Java设计模式菜鸟系列(十二)组合模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653 组合模式(Composite):组合模式有时又叫部分-整体模式,将对象组合成树形结构来表示"部分-整体"层次结构.组合模式在处理树形结构的问题时比较方便. 一.uml建模: 二.代码实现 /** * 示例:组合模式有时也称"整合-部分"模式 * * 组合模式在处理树形结构的问题时比较方便 * * 节点 */ class TreeNode { /

Java设计模式菜鸟系列(二)观察者模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39755577 观察者(Observer)模式定义:在对象之间定义了一对多的依赖关系,这样一来,当一个对象改变状态时,依赖它的对象都会收到通知并自动跟新.Java已经提供了对观察者Observer模式的默认实现, Java对观察者模式的支持主要体现在Observable类和Observer接口.先看uml模型图: 一.UML模型图 二.代码实现 /** 示例:咱们去菜市场买菜 * * 小商

Java设计模式菜鸟系列(二十一)享元模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40021651 享元模式(Flyweight):运用共享的技术有效地支持大量细粒度的对象.主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销.在某种程度上,你可以把单例看成是享元的一种特例. 一.uml建模: 二.代码实现 /** * 享元模式(Flyweight):运用共享的技术有效地支持大量细粒度的对象. * * 主要目的是实现对象的共享,即共享池,当系统中对象