设计模式-中介者模式

[b][size=large]中介者模式[/size][/b]
所谓中介者模式是指“用一个中介对象来封装一些列的对象交互,中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互”。

[color=green][b]1、UML类图如下;[/b][/color]
[img]http://dl2.iteye.com/upload/attachment/0091/0659/1db66fd3-29b1-3888-abf7-c6709950cff0.gif[/img]
[color=green]
[b]2、代码如下:[/b]中介者[/color]

package test.patterns.mediator;
//抽象中介者类
public abstract class Mediator {
public abstract void send(String info,Schoolgirl schoolgirl);
}
package test.patterns.mediator;
// 具体中介者类
public class ConcreteMediator extends Mediator{
// 具体同事对象1
private College college1;
// 具体同事对象2
private College college2;
//省略get,set
// 重写发送消息方法,以对象为依据进行选择判断,从而达到通知对象的目的。
@Override
public void send(String info, College college) {
if(college == college1){
college2.notifyInfo(info);
}else{
college1.notifyInfo(info);
}
}
}

[color=green]同事类:[/color]

package test.patterns.mediator;
// 抽象同事类
public abstract class College {
protected Mediator mediator;
public College(Mediator mediator){
this.mediator = mediator;
}
}
package test.patterns.mediator;
//具体同事对象1
public class College1 extends College{
public College1(Mediator mediator) {
super(mediator);
}
public void send(String info){
// 发送消息时通常是由中介者发送出去
mediator.send(info, this);
}
public void notifyInfo(String info){
String a="同事1说:";
System.out.println("同事1说:"+info);
}
}
package test.patterns.mediator;
//具体同事对象2
public class College2 extends College{
public College2(Mediator mediator) {
super(mediator);
}
public void send(String info){
// 发送消息时通常由中介者发送出去
mediator.send(info, this);
}
public void notifyInfo(String info){
String a="同事2说:";
System.out.println("同事2说:"+info);
}
}


[color=green][b]3、应用[/b][/color]
从MVC的角度展开分析,控制器可以认为是一种中介者。

JDK中反射方法类java.lang.reflect.Method;大家还记得方法的动态调用吧:
首先反射出一个class对象,从class对象中获取某方法method,再调用class对象new一个实体对象。method.invoke(object,args);
传入一个对象,然后调用其方法;

以上大部分摘自Java Web设计模式之道以及部分网络文章。

[size=medium][color=brown]Have a nice day~ [/color][/size] :arrow:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值