徹底明白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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章