java中介者模式的例子

运用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();
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值