美文网首页
设计模式-观察者设计模式

设计模式-观察者设计模式

作者: woochen123 | 来源:发表于2017-10-14 23:05 被阅读0次

    定义

    属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己

    示例

    场景:公众号推送文章,用户进行接收

    /**
     * 类描述:微信公众号用户(观察者)
     * 创建人:woochen123
     * 创建时间:2017/10/14 22:28
     */
    public interface IWxPublicUserObserver {
    
        /**
         * 获得文章
         */
        void getArticle(Article article);
    }
    
    /**
     * 类描述:微信公众号(被观察者)
     * 创建人:woochen123
     * 创建时间:2017/10/14 22:33
     */
    public class WxPublicNumberObservable {
    
        private ArrayList<IWxPublicUserObserver> observers;
    
        public WxPublicNumberObservable() {
            observers = new ArrayList<>();
        }
    
        /**
         * 订阅
         */
        public void subscribe(IWxPublicUserObserver observer){
            observers.add(observer);
        }
    
        /**
         * 取消订阅
         */
        public void unSubscribe(IWxPublicUserObserver observer){
            observers.remove(observer);
        }
    
        /**
         * 推送文章
         */
        public void pushArticle(Article article){
            for (IWxPublicUserObserver observer : observers) {
                observer.getArticle(article);
            }
        }
    
    }
    
        public void resActivity(){
            WxPublicNumberObservableManager.getInstance().pushArticle(new Article());
        };
    
    
        public void desActivity(){
            WxPublicNumberObservableManager.getInstance().subscribe(new IWxPublicUserObserver() {
                @Override
                public void getArticle(Article article) {
                    //阅读文章
                }
            });
        }
    

    源码中使用

    RxJava
    使用ListView时Adapter的notifyDataSetChanged()方法
    广播接收者

    总结

    观察者设计模式使事件的发送方和接收方实现了解耦,符合六大设计原则

    相关文章

      网友评论

          本文标题:设计模式-观察者设计模式

          本文链接:https://www.haomeiwen.com/subject/fctquxtx.html