设计模式(七)之观察者模式
2015-05-06 18:56
183 查看
被观察者接口:
观察者接口:
被观察者实现:
观察者实现:
调用者:
public interface IMonitorSubject { public void addListener(IMonitorListener listener); public void notifyListener(JobCtrl implJobCtrl); }
观察者接口:
public interface IMonitorListener { public void statistical(JobCtrl implJobCtrl); }
被观察者实现:
public class JobSubject implements IMonitorSubject { private final CopyOnWriteArraySet<IMonitorListener> monitorListener = new CopyOnWriteArraySet<>(); @Override public void addListener(IMonitorListener listener) { monitorListener.add(listener); } @Override public void notifyListener(JobCtrl implJobCtrl) { for (IMonitorListener listener : monitorListener) { try { listener.statistical(implJobCtrl); } catch (Exception e) { Log.e("statistic jobs error."); Log.e(e); } } } }
观察者实现:
public class JobListener implements IMonitorListener { private JobListener() { } static class SingletonHolder { static JobListener instance = new JobListener(); } public static JobListener getInstance() { return SingletonHolder.instance; } @Override public void statistical(JobCtrl implJobCtrl) { //do some things. } }
调用者:
public class JobMonitor{ private IMonitorSubject subject = new JobSubject(); private JobCtrl implJobCtrl= new JobCtrl(); public JobMonitor(){ subject.addListener(JobListener.getInstance()); } @Override public static void main(String[] args) { Log.i("JobMonitorBuilder start[schedule]-----"); subject.notifyListener(implJobCtrl); Log.i("JobMonitorBuilder end[schedule]-----"); return null; } }
相关文章推荐
- 设计模式(二十) 观察者模式
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式(行为模式)——观察者模式
- 设计模式(7)---->观察者模式
- 设计模式(10):观察者模式
- 设计模式(十)——观察者模式
- 设计模式C++实现(15)——观察者模式
- Observer观察者模式(来自《设计模式》一书)
- 设计模式总结(Java)—— 观察者模式
- 设计模式(六)观察者模式
- 设计模式(5)---观察者模式
- 设计模式系列之四:观察者模式
- 设计模式(十):观察者模式
- 设计模式系列课程17之【观察者模式】
- 设计模式(四)——观察者设计模式
- 设计模式13--观察者模式(Observer)
- 设计模式C++实现(15)——观察者模式
- 设计模式C++实现——观察者模式 (及附带Cocos2d观察者模式代码)
- 设计模式(三)观察者模式
- 设计模式C++实现(15)——观察者模式