首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计模式之中介者形式

2013-11-13 
设计模式之中介者模式中介者模式所谓中介者模式是指“用一个中介对象来封装一些列的对象交互,中介者是各对

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

1、UML类图如下;


2、代码如下:中介者

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);           }             }    }

同事类:
package test.patterns.mediator;// 抽象同事类public abstract class College {    protected Mediator mediator;            public College(Mediator mediator){           this.mediator = mediator;    }}package test.patterns.mediator;//具体同事对象1public 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);      }   }  


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

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

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

Have a nice day~

热点排行