博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式 之 中介者模式
阅读量:6594 次
发布时间:2019-06-24

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

 

23种设计模式源码 :

 

创建型模式,共五种:
结构型模式,共七种:
行为型模式,共十一种:

 

 

 

 

 

 

 

package 设计模式.中介者模式;/** * @author baoyou  E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:41:11 * 类说明: */public abstract class Agent {	public abstract void action(Person sender);    public abstract void addPerson(Person person);}

 

package 设计模式.中介者模式;import java.util.ArrayList;import java.util.List;/** * @author baoyou  E-mail:curiousby@163.com * @version 创建时间:2015年7月24日 上午10:28:06  * des: */public class ConcreteMediator extends Agent {	 private List
list = new ArrayList
(); @Override public void action(Person sender) { String msg = sender.getMsg(); for (Person p: list) { if(! sender.equals(p)){ if (sender.getAuthority()==1) { sender.sendMsg(sender,p); } else{ if (p.getAuthority()==1) { sender.sendMsg(sender,p); } } } } } @Override public void addPerson(Person person) { list.add(person); }}

 

package 设计模式.中介者模式;/** * @author baoyou  E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:38:27 * 类说明: */public abstract class Person {	private String name;	private int authority;	private Agent agent;	private String msg; 	public int getAuthority() {		return authority;	}	public void setAuthority(int authority) {		this.authority = authority;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public Agent getAgent() {		return agent;	} 	public Person(Agent agent) { 		this.agent = agent;	} 	public String getMsg() {		return msg;	}	public void setMsg(String msg) {		this.msg = msg;	}			 public abstract void sendMsg(Person self ,Person other); 	 public   void sendMsg(String msg){		 this.msg = msg;		 this.agent.action(this);	 } }

 

package 设计模式.中介者模式;/** * @author baoyou  E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:39:39 * 类说明: */public class LandlordWomen extends Person{	public  String name ="房东" ;	public LandlordWomen(Agent agent) {		super(agent); 		setName(name);		setAuthority(1);	}  	@Override	public void sendMsg(Person self, Person other) {		 System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() );			}	 }

 

package 设计模式.中介者模式;/** * @author baoyou  E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:40:26 * 类说明: */public class RenterBoy extends Person{	public  String name ="小明" ;		public RenterBoy(Agent agent) {		super(agent); 		setName(name);		setAuthority(0);	} 	@Override	public void sendMsg(Person self, Person other) {		System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() );	}}

 

package 设计模式.中介者模式;/** * @author baoyou  E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:40:26 * 类说明: */public class RenterGirl extends Person{	public  String name ="小红" ;		public RenterGirl(Agent agent) {		super(agent); 		setName(name);		setAuthority(0);	}  	@Override	public void sendMsg(Person self, Person other) {		System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() );	}}

 

package 设计模式.中介者模式;/** * @author baoyou  E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午2:01:34 * 类说明: */public class MediatorTest {	public static void main(String[] args) {		Agent agent = new ConcreteMediator();			Person xiaoming = new RenterBoy(agent);		Person xiaohong = new RenterGirl(agent);		Person fangdong = new LandlordWomen(agent);				agent.addPerson(fangdong);		agent.addPerson(xiaoming);		agent.addPerson(xiaohong);				fangdong.sendMsg("我要出租 一间卧室");		xiaohong.sendMsg("我想我可以花费 500 元 出租 ");		xiaoming.sendMsg("我想我可以花费 450 元 出租");		fangdong.sendMsg("我出租给小红了");			}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。

 
 
 谢谢您的赞助,我会做的更好!

 

 

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

你可能感兴趣的文章
在ubuntu系统安装jdk
查看>>
很久没写了
查看>>
我的友情链接
查看>>
Cacti部署SOP
查看>>
Extjs - Panel组件
查看>>
收集参数及反转过程
查看>>
PPTP××× 数据分流
查看>>
mongodb 索引
查看>>
Citrix 宣布 XenServer 全面开源
查看>>
我的友情链接
查看>>
oracle 如果为空则输出0
查看>>
Spfa(最短路求解)
查看>>
使用linux-c编程实现简单的ls命令
查看>>
Q:按F12进行网络安装系统时,一直无法进入,提示加载失败?
查看>>
我的友情链接
查看>>
解决AutoCAD acmgd.dll ARX命令中发现异常
查看>>
[转]passport.js学习笔记
查看>>
10.31T3 其他算法思想
查看>>
day10,11-Python 基本数据类型介绍之数字与字符串(看看就好)
查看>>
JAVA API----Math类和Random类
查看>>