observable(ninth day)

来源:互联网 发布:wex5 php服务器端 编辑:程序博客网 时间:2024/06/06 17:44
观察者模式: 第一对象间一种对多的依赖关系,使得当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。


被观察者:
                 能动态的增加,取消观察者。它一般是抽象类或者是实现类,仅仅完成座位被观察者必须实现的职责,管理观察者并通知观察者。
                
观察者:   观察者接收到消息后,即进行update,对接收到的信息进行处理。

具体观察者: 对消息进行处理

具体被观察者:  定义自己的业务, 同时通知观察者


\

public interface Observable {/** * 增加观察者 */void adObserver(Observer observer);void deleteObserver(Observer observer);/** * 发生改变时通知 * @param context */public void notifyObservers(String context);}

public interface NewspaperFactory {public  void createLastNewspaper();}

public class NewspaperOffice implements Observable ,NewspaperFactory{//观察者离列表——》报刊亭private ArrayList<Observer> observerList = new ArrayList<Observer>(); public void adObserver(Observer observer) {observerList.add(observer);} public void deleteObserver(Observer observer) {observerList.remove(observer);} public void notifyObservers(String context) { for(Observer o : observerList){ o.update(context); }}@Overridepublic void createLastNewspaper() {System.out.println("最新的报纸生产出来了");//通知 报亭有新报纸notifyObservers("新的报纸");} }

public interface Observer {public void update(String context) ;}

public class Newsstand implements Observer{/** * 报刊亭做自己的事情 */public void update(String context) {System.out.println("最新报纸出来了,要上架卖");}}

public class Client {public static void main(String[] args) {NewspaperOffice ob = new  NewspaperOffice();Observer stand = new Newsstand();ob.adObserver(stand);ob.createLastNewspaper(); }}


0 0
原创粉丝点击