美文网首页
彻底明白Android设计模式—观察者模式(发布-订阅模式)

彻底明白Android设计模式—观察者模式(发布-订阅模式)

作者: 积木zz | 来源:发表于2020-04-20 10:14 被阅读0次

    顾名思义,这个模式就是用来观察的,形成一种观察的关系后,当这个对象的状态改变,其他所有的观察者都会有所反馈

    开始举🌰,比如最近很火的抢口罩!!
    当所有人都订阅观察一款口罩的存货信息,口罩有存货后会给每个用户发消息,然后用户就可以来抢购了,这就是观察者模式,上代码:

     /**
         * 定义观察者的接口
         */
        public interface Observer {
            public void notifyMsg(String msg);
        }
    
        /**
         * 定义买口罩的用户类
         */
        public class BuyUser implements Observer {
    
            @Override
            public void notifyMsg(String msg) {
                //收到口罩有货的消息就去抢购
            }
        }
    
        /**
         * 定义口罩的接口
         */
        public interface observable {
            public void addBuyUser(BuyUser user);
    
            public void deleteBuyUser(BuyUser user);
    
            public void notify(String msg);
        }
    
        /**
         * 定义被观察类,口罩
         */
        public class Mask implements observable {
    
            List<BuyUser> mUserList = new ArrayList();
    
            @Override
            public void addBuyUser(BuyUser user) {
                mUserList.add(user);
            }
    
            @Override
            public void deleteBuyUser(BuyUser user) {
                mUserList.remove(user);
            }
    
            @Override
            public void notify(String msg) {
                for (BuyUser user : mUserList) {
                    user.notifyMsg(msg);
                }
            }
        }
    

    这里定义了观察者(买口罩的用户)以及被观察类(口罩商品),并且定义了相应的接口,
    然后具体使用情况呢,就是 口罩到货——通知用户
    上代码:

        public  void main() {
            Mask mask=new Mask();
            mask.addBuyUser(new BuyUser());
            mask.addBuyUser(new BuyUser());
            mask.addBuyUser(new BuyUser());
            mask.notify("口罩有货啦");
        }
    

    mask调用notify方法后,每个具体的用户就能收到口罩有货的消息了,然后就可以进行购买等一系列操作。是不是很简单

    在Android中的应用

    其实大家常写的Activity管理类就是这种设计模式,Activity管理类怎么设计的?
    每运行一个Activity,就把Activity的实例加入ActivityManager,然后可以统一管理,进行销毁或者其他操作,就相当于通过这个管理类通知到每个Activity了

    相关文章

      网友评论

          本文标题:彻底明白Android设计模式—观察者模式(发布-订阅模式)

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