package cn.com.My; //observer public interface Obeserver { void update(String data); }
package cn.com.My; //leader 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; //The name of the student, used to identify different student objects private String name; public Student(String name,Teacher t) { this.name=name; this.t = t; //Each new student object is added to the observer's ranks by default t.addObserver(this); } @Override public void update(String data) { // TODO Auto-generated method stub System.out.println(name+"Get job:"+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("No more..."); } } @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("Today's homework is "+str); this.notifyObserver(); } }