文档章节

设计模式--中介者模式

游动的海蜇
 游动的海蜇
发布于 2016/04/08 10:19
字数 421
阅读 43
收藏 2

中介者模式(mediator):

用来降低类与类之间的耦合。

中介者模式的优点:

只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,有点像spring容器的作用。

示例:

中介者模式测试类MediatorTest.java

/**
 * 中介者模式测试类
 *
 * @author Kevin
 * @date 2016-3-16
 */
public class MediatorTest {

	public static void main(String[] args) {
		Mediator mediator = new MediatorImpl();
		mediator.createMediator();
		mediator.worKTogether();
	}

}

抽象的用户类AbstractUser.java

/**
 * 抽象的用户类
 *
 * @author Kevin
 * @date 2016-3-16
 */
public abstract class AbstractUser {

	/* 中介 */
	private Mediator mediator;

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

	/**
	 * 工作
	 *
	 * @author Kevin
	 */
	public abstract void work();

	public Mediator getMediator() {
		return mediator;
	}

	public void setMediator(Mediator mediator) {
		this.mediator = mediator;
	}
}

前端开发工程师类FrontEndDeveloper.java

/**
 * 前端开发工程师
 *
 * @author Kevin
 * @date 2016-3-16
 */
public class FrontEndDeveloper extends AbstractUser {

	public FrontEndDeveloper(Mediator mediator) {
		super(mediator);
	}

	@Override
	public void work() {
		System.out.println("进行前端开发");
	}
}

后端开发工程师类BackEndDeveloper.java

/**
 * 后端开发工程师
 *
 * @author Kevin
 * @date 2016-3-16
 */
public class BackEndDeveloper extends AbstractUser {

	public BackEndDeveloper(Mediator mediator) {
		super(mediator);
	}

	@Override
	public void work() {
		System.out.println("进行后端开发");
	}
}

中介接口类Mediator.java

/**
 * 中介接口
 *
 * @author Kevin
 * @date 2016-3-16
 */
public interface Mediator {

	/**
	 * 创建中介
	 *
	 * @author Kevin
	 */
	void createMediator();

	/**
	 * 协同工作
	 *
	 * @author Kevin
	 */
	void worKTogether();

}

具体的中介类(如PM充当前端工程师和后端工程师的中介,让他们协同工作)MediatorImpl.java

/**
 * 具体的中介(如PM充当前端工程师和后端工程师的中介,让他们协同工作)
 *
 * @author Kevin
 * @date 2016-3-16
 */
public class MediatorImpl implements Mediator {

	/* 前端开发工程师 */
	private FrontEndDeveloper frontEndDeveloper;

	/* 后端开发工程师 */
	private BackEndDeveloper backEndDeveloper;

	@Override
	public void createMediator() {
		frontEndDeveloper = new FrontEndDeveloper(this);
		backEndDeveloper = new BackEndDeveloper(this);
	}

	@Override
	public void worKTogether() {
		frontEndDeveloper.work();
		backEndDeveloper.work();
	}

	public FrontEndDeveloper getFrontEndDeveloper() {
		return frontEndDeveloper;
	}

	public BackEndDeveloper getBackEndDeveloper() {
		return backEndDeveloper;
	}

}

© 著作权归作者所有

游动的海蜇
粉丝 9
博文 121
码字总数 33636
作品 0
杭州
程序员
私信 提问
《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们...

嗨呀豆豆呢
2018/12/30
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
2018/06/24
0
0
JavaScript常用设计模式

设计模式 设计模式是一种在长时间的经验与错误中总结出来可服用的解决方案。 设计模式主要分为3类: 创建型设计模式:专注于处理对象的创建 Constructor构造器模式,Factory工厂模式,Singl...

a独家记忆
2018/07/13
0
0
《JavaScript设计模式与开发实践》模式篇(11)—— 中介者模式

中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的 相关对象都通过中介者对象来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知 中介者对象即...

嗨呀豆豆呢
2018/12/23
0
0
JavaScript 中常见设计模式整理

开发中,我们或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式。本文意在梳理常见设计模式的特点,从而对它们有比较清晰的认知。 JavaScript 中...

牧云云
2018/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

全面兼容IE6/IE7/IE8/FF的CSS HACK写法

浏览器市场的混乱,给设计师造成很大的麻烦,设计的页面兼容完这个浏览器还得兼容那个浏览器,本来ie6跟ff之间的兼容是很容易解决的。加上个ie7会麻烦点,ie8的出现就更头疼了,原来hack ie...

前端老手
17分钟前
3
0
常用快递电子面单批量打印api接口对接demo-JAVA示例

目前有三种方式对接电子面单: 1.快递公司:各家快递公司逐一对接接口 2.菜鸟:支持常用15家快递电子面单打印 3.快递鸟:仅对接一次,支持常用30多家主流快递电子面单打印 目前也是支持批量打...

程序的小猿
20分钟前
6
0
Yii 框架中rule规则必须搭配验证函数才能使用

public $store_id;public $user_id;public $page;public $limit;public $list;public $mch_list;public $cart_id;public $is_community;public $shop_id;public $cart_typ......

chenhongjiang
23分钟前
4
0
Flutter使用Rammus实现阿里云推送

前言: 最近新的Flutter项目有“阿里云推送通知”的需求,就是Flutter的App启动后检测到有新的通知,点击通知栏然后跳转到指定的页面。在这里我使用的是第三方插件Rammus来实现通知的推送,之...

EmilyWu
23分钟前
42
0
Knative 实战:三步走!基于 Knative Serverless 技术实现一个短网址服务

短网址顾名思义就是使用比较短的网址代替很长的网址。维基百科上面的解释是这样的: 短网址又称网址缩短、缩短网址、URL 缩短等,指的是一种互联网上的技术与服务,此服务可以提供一个非常短...

阿里巴巴云原生
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部