运用java中介者模式的一个小程序
/**
*
*/
package Mediator;
/**
* @author Administrator
*
*/
public abstract class Mediator {
//Mediator定义对SchoolRole的一个交互行为
public abstract void action(SchoolRole role);
//加入SchoolRole对象
public abstract void addRole(SchoolRole role);
}
/**
*
*/
package Mediator;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
*
*/
public class ConcreteMediator extends Mediator{
private List<SchoolRole> roles=new ArrayList<SchoolRole>(0);
public void action(SchoolRole act){
String msg=act.getMessage();
for(SchoolRole role:roles){
if(role.equals(act)){
role.sendMsg();
break;
}
}
for(SchoolRole role:roles){
if(role.equals(act))
continue;
role.receMsg(msg);
}
}
public void addRole(SchoolRole role){
roles.add(role);
}
}
/**
*
*/
package Mediator;
/**
* @author Administrator
*
*/
public abstract class SchoolRole {
//中介者
private Mediator mediator;
public Mediator getMediator(){
return mediator;
}
SchoolRole(Mediator mediator){
this.mediator=mediator;
}
//消息
private String message;
public String getMessage(){
return message;
}
//需要子类实现的抽象方法
//发送消息
public abstract void sendMsg();
//收到消息
public abstract void receMsg(String msg);
public abstract void setName(String name);
public abstract String getName();
//发送消息
public void sendMsg(String msg){
this.message=msg;
mediator.action(this);
}
}
/**
*
*/
package Mediator;
/**
* @author Administrator
*
*/
public class Office extends SchoolRole{
String name;
public Office(Mediator m){
super(m);
}
//发送消息
public void sendMsg(){
System.out.println(name+"发送的消息是'"+getMessage()+"'");
}
//收到消息
public void receMsg(String msg){
System.out.println(name+"接受的消息是'"+msg+"'");
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
/**
*
*/
package Mediator;
/**
* @author Administrator
*
*/
public class Student extends SchoolRole{
String name;
public Student(Mediator m){
super(m);
}
//发送消息
public void sendMsg(){
System.out.println(name+"发送的消息是'"+getMessage()+"'");
}
//收到消息
public void receMsg(String msg){
System.out.println(name+"接受的消息是'"+msg+"'");
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
/**
*
*/
package Mediator;
/**
* @author Administrator
*
*/
public class Teacher extends SchoolRole{
String name;
public Teacher(Mediator m){
super(m);
}
//发送消息
public void sendMsg(){
System.out.println(name+"发送的消息是'"+getMessage()+"'");
}
//收到消息
public void receMsg(String msg){
System.out.println(name+"接受的消息是'"+msg+"'");
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
/**
*
*/
package Mediator;
/**
* @author Administrator
*
*/
public class MediatorText {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Mediator mediator=new ConcreteMediator();
SchoolRole Office=new Office(mediator);
SchoolRole Student=new Student(mediator);
SchoolRole Teacher=new Teacher(mediator);
Office.setName("办公室人员");
Student.setName("学生");
Teacher.setName("老师");
//注册对象到中介者
mediator.addRole(Office);
mediator.addRole(Student);
mediator.addRole(Teacher);
//Office 的行为
Office.sendMsg("今天下午两点开会!");
System.out.println();
//Student 的行为
Student.sendMsg("我们今天下午有课");
System.out.println();
//Teacher 的行为
Teacher.sendMsg("咱们可以把课调一下");
System.out.println();
}
}