设计模式 一一一 策略模式

南笙酒味 提交于 2020-03-08 02:45:13

观察者模式(Observer)
    概念:
        又叫做发布-订阅(publish-subscribe)模式。
        多个观察者同时监听某一个对象,当这个对象发生变化时,这个对象会通知所有感兴趣的观察者,以便于他们能够做出相应的处理。
    

jdk中的观察者模式:
    Observer    观察者
        说明:观察(监听)着感兴趣的对象,通过将自身注册到感兴趣的对象中,并且由感兴趣的对象发通知来实现观察(监听)的效果。收到通知后,根据通知的内容做相应的处理。
    Observable     被观察者
        说明:维护者对自身感兴趣的观察者,并且可以将自身的情况通知给观察者。
    
    /**
     * 被观察者Observable
     */    
    public class Observable {

        /**
         * 维护着注册到自身的观察者列表
         */    
        private Vector<Observer> obs; // 观察者注册表

        /**
         * 当自身(即被观察的对象)发送变化时,依次通知注册表中的观察者
         */    
        public void notifyObservers() {
            // 说明:下面是简化后的代码,可以使逻辑看起来更清晰一些。
            Object[] arrLocal = obs.toArray();
            for (int i = arrLocal.length-1; i>=0; i--)
                ((Observer)arrLocal[i]).update(this, arg);
        }
    }

    /**
     * 观察者Observer
     */    
    public interface Observer {
        /**
         * This method is called whenever the observed object is changed. 
         * An application calls an Observable object's notifyObservers method to have all the object's observers notified of the change.
         *
         * @param   o     the observable object.
         * @param   arg   an argument passed to the <code>notifyObservers</code> method.
         */
        void update(Observable o, Object arg);
    }
            
        
        
spring中的观察者模式:
    spring中的事件机制就是基于观察者模式进行设计的。
    
    
    

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!