观察者模式

观察者模式:定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。

以班级考试为例
老师——被观察者
学生——观察者
当老师打分结束了,就会通知他们班的学生看他们自己的学习成绩。

1、Observable(被观察者)

interface Teacher{
	void attach();
	void detach();
	void notify();
}

pblic class MathTeacher implements Teacher{
	private List<Student> observers;

	public MathTeacher(){
		observers = new Arraylist();
	}
	
	@Override
	public void attach(Student student){
		observers.add(student);
	}
	
	@Override
	public void detach(Student student){
		if(observers.contains(student)){
			observers.remove(student);
		}
		
	}
	
	@Override
	public void notify(){
		for(Student student : observers){
			student.watch("95");
		}
	}
}

2、Observer(观察者)

interface Student{
	void watch(String result);
}

pblic class NormalStudent implements Student{
	
	@Override
	public void watch(String result){
		  System.out.print("成绩:---->"+result);
	}
	
}


3、使用

MathTeacher mathTeacher = new MathTeacher();

NormalStudent studentA = new NormalStudent();
NormalStudent studentB = new NormalStudent();
NormalStudent studentC = new NormalStudent();

mathTeacher.add(studentA);
mathTeacher.add(studentB);
mathTeacher.add(studentC);

mathTeacher.notify();

其实就是:遍历+接口回调呗

你可能感兴趣的:(java,#,设计模式)