转载请注明出处: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();
}
} /**
* client測试类
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
Mediator mediator = new MyMediator();
mediator.createMediator();
mediator.recommendHouse();
}
}

三、总结

中介者模式仅仅需关心和Mediator类的关系,详细类与类之间的关系及调用交给Mediator即可。

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

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

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天開始咱们来谈谈Java设计模式. 这里会结合uml图形来解说,有对uml ...

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

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40008711 桥接模式(Bridge): 把事物和其详细实现分开(抽象化与实现化解耦),使 ...

  3. Java并发编程系列之三十二:丢失的信号

    这里的丢失的信号是指线程必须等待一个已经为真的条件,在開始等待之前没有检查等待条件.这样的场景事实上挺好理解,假设一边烧水,一边看电视,那么在水烧开的时候.由于太投入而没有注意到水被烧开. 丢失的信号 ...

  4. Java设计模式菜鸟系列(十四)代理模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些 ...

  5. Java设计模式菜鸟系列(十)模板方法模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973 模板方法模式(Template Method):在一个方法中定义了一个算法的 ...

  6. Java设计模式菜鸟系列(十五)建造者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...

  7. 整数转罗马数字 C++实现 java实现 leetcode系列(十二)

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  8. Java设计模式菜鸟系列(两)建模与观察者模式的实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39755577 观察者(Observer)模式定义:在对象之间定义了一对多的依赖关系,这样一 ...

  9. Java设计模式菜鸟系列(九)外观模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...

随机推荐

  1. 微信支付v2开发(9) 标记客户投诉处理状态

    本文介绍微信支付中如何标记客户投诉的处理状态. 一.API Api 的 url 为: https://api.weixin.qq.com/payfeedback/update?access_token ...

  2. Linux学习总结(4)——Centos6.5使用yum安装mysql——快速上手必备

    第1步.yum安装mysql [root@stonex ~]#  yum -y install mysql-server 安装结果: Installed:     mysql-server.x86_6 ...

  3. FarPoint.Win.Spread 常规操作

    FarPoint.Win.Spread.FpSpread fSpread = new FarPoint.Win.Spread.FpSpread();             //设置 行数.列数    ...

  4. python分解质因数

    将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. # !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wa ...

  5. Windows下安装Resin及配置具体解释与公布应用

        关于Resin的优点,网上介绍了一大堆.小编经不住诱惑,决定试用一下. 眼下Resin的最新版本号为:4.0.40.能够从官网直接下载.     1. 将下载下来的Resin包解压开,会看到一 ...

  6. MySQL字符编码问题,Incorrect string value

    MySQL上插入汉字时报错例如以下.详细见后面分析. Incorrect string value: '\xD0\xC2\xC8A\xBEW' for column 'ctnr' at row 1 M ...

  7. orabbix 报错No suitable driver found for

     orabbix报错如下:   2018-07-11 14:35:20,119 [main] ERROR Orabbix - Error on Configurator for database qa ...

  8. 【b091&&z11】潜伏者

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动. 历尽艰险后,潜伏于S国的R国间谍小 ...

  9. Best Practices for QML and Qt Quick

    Despite all of the benefits that QML and Qt Quick offer, they can be challenging in certain situatio ...

  10. php javascript的ajax

    先说基础一点的get类型的ajax function loadXMLDoc() { var xmlhttp;//首先判断浏览器是否支持xmlhttprequest,因为ie56不是这个对象,是acti ...