博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类对象Java设计模式之十八(中介者模式)
阅读量:5905 次
发布时间:2019-06-19

本文共 3172 字,大约阅读时间需要 10 分钟。

PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!

    一、什么是中介者模式

   Mediator模式也叫中介者模式,是由GoF提出的23种件软计划模式的一种。Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被同一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着制控器的作用。

    

    二、中介者模式的结构

    

    

    三、中介者模式的角色和职责

    mediator 中介者类的抽象父类。

    

concreteMediator  详细的中介者类。

    

colleague  关联类的抽象父类。

    

concreteColleague 详细的关联类。

    

    四、中介者模式的点优

    1,将系统按功能分割成更小的对象,符合类的最小计划则原

    2,对关联对象的会合制控

    3,减小类的合耦度程,确明类之间的相互系关:当类之间的系关过于庞杂时,其中任何一个类的修改会都影响到其他类,不符合类的计划的开闭则原 ,而Mediator模式将本来相互依存的多对多的类之间的系关简化为Mediator制控类与其他关联类的一对多的系关,当其中一个类修改时,可以对其他关联类不产生影响(即使有修改,也会合在Mediator制控类)。

    4,有利于高提类的重用性

    

    代码现实:

    mediator (抽象类略省):

package com.qianyan.mediator;public class Mediator {	private Man man;	private Woman woman;		public void setMan(Man man) {		this.man = man;	}	public void setWoman(Woman woman) {		this.woman = woman;	}		public void getPartner(Person person) {		//设置对方信息		if(person instanceof Man)			this.setMan((Man) person);		else			this.setWoman((Woman) person);				//断判相配度		if(this.man == null || this.woman == null)			System.out.println("汗,我不是同性恋");		else{			if(this.man.getCondition() == this.woman.getCondition())				System.out.println(this.man.getName() + "和" + this.woman.getName() + "绝配");			else				System.out.println(this.man.getName() + "和" + this.woman.getName() + "不相配");		}	}}

    colleague:

    每日一道理
巴尔扎克说过“不幸,是天才的进升阶梯,信徒的洗礼之水,弱者的无底深渊”。风雨过后,眼前会是鸥翔鱼游的天水一色;走出荆棘,前面就是铺满鲜花的康庄大道;登上山顶,脚下便是积翠如云的空蒙山色。 在这个世界上,一星陨落,黯淡不了星空灿烂,一花凋零,荒芜不了整个春天。人生要尽全力度过每一关,不管遇到什么困难不可轻言放弃。
package com.qianyan.mediator;public abstract class Person {		private String name;	private int condition;	private Mediator mediator;		public Person(String name, int condition, Mediator mediator) {		this.name = name;		this.condition = condition;		this.mediator = mediator;	}		public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getCondition() {		return condition;	}	public void setCondition(int condition) {		this.condition = condition;	}	public Mediator getMediator() {		return mediator;	}	public void setMediator(Mediator mediator) {		this.mediator = mediator;	}		public abstract void getPartner(Person person);	}

    concreteColleague:

package com.qianyan.mediator;public class Man extends Person {	public Man(String name, int condition, Mediator mediator) {		super(name, condition, mediator);	}	//1、中介注册  2、中介配匹	public void getPartner(Person person) {		this.getMediator().setMan(this);		this.getMediator().getPartner(person);	}}
package com.qianyan.mediator;public class Woman extends Person {	public Woman(String name, int condition, Mediator mediator) {		super(name, condition, mediator);	}	//1、中介注册  2、中介配匹	public void getPartner(Person person) {		this.getMediator().setWoman(this);		this.getMediator().getPartner(person);	}}

    试测类:

package com.qianyan.mediator;public class MainClass {	public static void main(String[] args) {		Mediator mediator = new Mediator();				Person zhangsan = new Man("张三", 3, mediator);		Person lisi = new Man("李四", 1, mediator);		Person xiaofang = new Woman("小芳", 3, mediator);				zhangsan.getPartner(lisi);		zhangsan.getPartner(xiaofang);		lisi.getPartner(xiaofang);	}}

    试测结果:

汗,我不是同性恋张三和小芳绝配李四和小芳不相配

文章结束给大家分享下程序员的一些笑话语录: 看到有人回帖“不顶不是中国人”,他的本意是想让帖子沉了。

转载地址:http://nqdpx.baihongyu.com/

你可能感兴趣的文章
minio 并发数_MinIO 参数解析与限制
查看>>
flash back mysql_mysqlbinlog flashback 使用最佳实践
查看>>
mysql存储引擎模式_MySQL存储引擎
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
WinForm窗体缩放动画
查看>>
JQuery入门(2)
查看>>
linux文件描述符
查看>>
传值引用和调用引用的区别
查看>>
hyper-v 无线网连接
查看>>
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>