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