*本篇文章已授权微信公众号 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) {
subjec

本文深入分析BroadcastReceiver中使用的设计模式,包括观察者模式在广播注册过程中的体现,代理模式如何在跨进程通信中发挥作用,以及适配器模式如何封装Binder对象,提供更友好的接口。通过对BroadcastReceiver源码的研究,揭示了Android系统中这些模式的实际应用。
最低0.47元/天 解锁文章
728

被折叠的 条评论
为什么被折叠?



