中介者模式(MediatorPattern)

基本介绍:

    用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。可以将网状结构变为星状结构,使同事类之间的关系变的清晰。


示例代码:

package org.brando;

/**
 * 
 * 类说明: 测试类
 * @author Brando 2018年3月29日 下午2:03:59
 */
public class Launcher {

	public static void main(String[] args) {
		
		Teacher teacher = new Teacher("Brando");
		
		Student student1 = new Student("张三");
		Student student2 = new Student("李四");
		Student student3 = new Student("王五");
		
		Mediator mediator = new Mediator();
		mediator.addStudent(student1);
		mediator.addStudent(student2);
		mediator.addStudent(student3);
		
		mediator.sendMessage("Hello", teacher);
		
	}
	 
}

package org.brando;

/**
 * 
 * 类说明: 人
 * @author Brando 2018年6月6日 下午2:38:21
 */
public class Person {

	public String name;
	
	Person(String name) {
		this.name = name;
	}
	
}


package org.brando;

/**
 * 
 * 类说明: 老师
 * @author Brando 2018年6月6日 下午2:36:40
 */
public class Teacher extends Person {

	Teacher(String name) {
		super(name);
	}

}


package org.brando;

/**
 * 
 * 类说明: 学生.
 * @author Brando 2018年6月6日 下午2:36:40
 */
public class Student extends Person {

	Student(String name) {
		super(name);
	}

	/**
	 * 
	 * 方法说明: 接收消息
	 * @author Brando 2018年6月6日 下午2:55:21
	 * @param teacher 发送人
	 * @param message 消息内容
	 */
	public void receiveMessage(Person teacher, String message) {
		System.out.println(this.name + " 接收到 " + teacher.name + " 的消息, 消息内容:" + message);
	}
	
}

package org.brando;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * 类说明: 中介者
 * @author Brando 2018年6月6日 下午2:39:47
 */
public class Mediator {

	/**学生集合**/
	List<Student> studentList = new ArrayList<Student>();
	
	/**
	 * 
	 * 方法说明: 添加学生.
	 * @author Brando 2018年6月6日 下午2:41:09
	 * @param stu
	 */
	public void addStudent(Student stu) {
		studentList.add(stu);
	}

	/**
	 * 
	 * 方法说明: 发送消息给学生,
	 * @author Brando 2018年6月6日 下午2:54:51
	 * @param message 消息内容
	 * @param teacher 老师
	 */
	public void sendMessage(String message, Teacher teacher) {
		
		for (int i = 0; i < studentList.size(); i++) {
			Student stu = studentList.get(i);
			stu.receiveMessage(teacher, message);
		}
		
	}
	
}
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院