观察者模式(Observer)例子
?
public interface Subject{ public void addObserver(Observer observer); public void removeObserver(Observer observer); public void notifyObservers(); public void notifyObservers(String blog);}public interface Observer{ public void update(String blog);}import java.util.ArrayList;import java.util.List;import com.huawei.observer.inter.Observer;import com.huawei.observer.inter.Subject;public class Blogger implements Subject{ private List<Observer> observers; private String blog; public Blogger() { observers=new ArrayList<Observer>(); } public void addObserver(Observer observer) { observers.add(observer); } public void removeObserver(Observer observer) { observers.remove(observer); } public void notifyObservers() { for(Observer ob:observers) { ob.update(blog); } } public void notifyObservers(String blog) { this.blog=blog; notifyObservers(); } public void writeNewBlog(String blog) { this.blog=blog; notifyObservers(); }}import com.huawei.observer.inter.Observer;/** * 邮件订阅者 * <一句话功能简述> * <功能详细描述> * * @author gKF33650 * @version [版本号, 2010-10-25] * @see [相关类/方法] * @since [产品/模块版本] */public class EmailSubscriber implements Observer{ public void update(String blog) { System.out.println("发送电子邮件:"+blog); } }import com.huawei.observer.inter.Observer;/** * RSS订阅者 * <一句话功能简述> * <功能详细描述> * * @author gKF33650 * @version [版本号, 2010-10-25] * @see [相关类/方法] * @since [产品/模块版本] */public class RssSubscriber implements Observer{ /** * RSS订阅者 * @param blog */ public void update(String email) { System.out.println("RSS订阅者:"+email); } }import com.huawei.observer.impl.Blogger;import com.huawei.observer.impl.EmailSubscriber;import com.huawei.observer.impl.RssSubscriber;import com.huawei.observer.inter.Observer;import com.huawei.observer.inter.Subject;public class Test{ public static void main(String[] args) { Subject sub=new Blogger(); //创建邮件订阅者 Observer obemail=new EmailSubscriber(); sub.addObserver(obemail); //创建RSS订阅者 Observer obrss=new RssSubscriber(); sub.addObserver(obrss); sub.notifyObservers("这是一个观察者!"); }}执行结果:发送电子邮件:这是一个观察者!RSS订阅者:这是一个观察者!?