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

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

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

 /**
     * 定义观察者的接口
     */
    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设计模式)