BroadcastReceiver中的那些设计模式

*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布
原创文章,转载请注明 ( 来自:http://blog.csdn.net/tiefeng0606/article/details/51499199 IZZY的博客 )

前文写过BroadCastReceiver的源码的分析BroadcastReceiver源码解析(二),文章很长终于把广播的注册和发送流程详细的分析了一遍。最近用RationalRose画了画它的类图,于是将BroadCastReceiver中涉及的设计模式分析分析,准备再扒一层。
由于技术水平有限,研究了BroadCastReceiver的过程中,目前只发现涉及到了三种设计模式,分别为观察者,代理和适配器模式。

一,观察者模式

观察者模式类图:

观察者模式

类图完了,下面是具体的代码实现:

//定义观察者接口
public interface Observer {
   
public void update(String s);
}
//定义主题接口
public interface Subject {
   
    public void regist(Observer observer);//定义注册观察者方法
    public void unRegist(Observer observer);//定义反注册观察者方法
    public void notifyObserver(String s);//通知观察者消息
}

//主题的实现类
public class ConcreteSubject implements Subject{
   
//定义一个集合,存放注册进来的观察者对象
    private ArrayList< Observer> mList=new ArrayList<Observer>();
    public void regist(Observer observer) {     
        mList.add(observer);
    }

    public void unRegist(Observer observer) {
        mList.remove(observer);

    }
//遍历集合,逐个调用其update方法更新数据
    public void notifyObserver(String s) {
        for(int i=0;i<mList.size();i++)
        {
            mList.get(i).update(s);
        }

    }

}

//1号观察者,实现了观察者类
public class ConcreteObserver1 implements Observer {
   

    public ConcreteObserver1(Subject subject) {

        subject.regist(this)
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值