设计模式之中介者模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 设计模式之中介者模式

设计模式之中介者模式

 2013/11/11 0:55:10  edr_  程序员俱乐部  我要评论(0)
  • 摘要:中介者模式所谓中介者模式是指“用一个中介对象来封装一些列的对象交互,中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互”。1、UML类图如下;2、代码如下:中介者packagetest.patterns.mediator;//抽象中介者类publicabstractclassMediator{publicabstractvoidsend(Stringinfo,Schoolgirlschoolgirl);}packagetest.patterns
  • 标签:模式 设计 设计模式
中介者模式
所谓中介者模式是指“用一个中介对象来封装一些列的对象交互,中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互”。

1、UML类图如下;


2、代码如下:中介者

class="java">
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;
//具体同事对象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);  
    }   
}  


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

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

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

Have a nice day~
  • 大小: 4.7 KB
  • 查看图片附件
上一篇: ThreadPoolExecutor 下一篇: 没有下一篇了!
发表评论
用户名: 匿名