package cn.com.My;
//观察者
public interface Obeserver {
void update(String data);
}
package cn.com.My;
//主导者
public interface Subject {
void addObserver(Obeserver o);
void removeObserver(Obeserver o);
void notifyObserver();
}
package cn.com.My;
import com.wang.observer.TeacherSubject;
public class Student implements Obeserver{
private Teacher t;
//学生的姓名,用来标识不同的学生对象
private String name;
public Student(String name,Teacher t) {
this.name=name;
this.t = t;
//每新建一个学生对象,默认添加到观察者的行列
t.addObserver(this);
}
@Override
public void update(String data) {
// TODO Auto-generated method stub
System.out.println(name+"得到作业:"+data);
}
}
package cn.com.My;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class Teacher implements Subject{
private Obeserver o;
private String str;
List<Obeserver> list = new ArrayList<Obeserver>();
public void addObserver(Obeserver o) {
// TODO Auto-generated method stub
this.o = o;
list.add(o);
}
@Override
public void removeObserver(Obeserver o) {
// TODO Auto-generated method stub
if(list.size() > 0){
list.remove(list.indexOf(o));
}else{
System.out.println("没有更多......");
}
}
@Override
public void notifyObserver() {
// TODO Auto-generated method stub
for(int i = 0 ; i < list.size();i++){
Obeserver o = list.get(i);
o.update(str);
}
}
public void setWork(String str){
this.str = str;
System.out.println("今天的作业是"+str);
this.notifyObserver();
}
}