设计模式:观察者模式-observer
来源:互联网 发布:linux oracle关闭监听 编辑:程序博客网 时间:2024/06/03 16:12
定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新
实际上是subject中有一个observer的bean序列,当subject更新时,调用该序列中所有的observer的更新,即实现观察者模式
代码
Main
public class Main { public static void main(String[] args) { SubjectImp mySubject=new SubjectImp(); mySubject.setObserver(new Observer01()); mySubject.setObserver(new Observer02()); mySubject.setObserver(new Observer03()); mySubject.update(); }}
interface:Observer
public interface Observer { public void update();}
abs:Subject
public abstract class Subject { List<Observer> observer=new ArrayList<Observer>(); public boolean setObserver(Observer o){ try{ observer.add(o); }catch(Exception e){ System.out.println(e); return false; } return true; } public boolean delObserver(Observer o){ try{ observer.remove(o); }catch(Exception e){ System.out.println(e); return false; } return true; } public void Notify(){ for(int i=0;i<observer.size();i++){ observer.get(i).update(); } }}
imp:SubjectImp
public class SubjectImp extends Subject { public void update(){ System.out.println("========subject is update==========="); Notify(); }}
imp:Observer01
public class Observer01 implements Observer { @Override public void update() { System.out.println("observer update 01"); }}
imp:Observer02
public class Observer02 implements Observer { @Override public void update() { System.out.println("observer update 02"); }}
imp:Observer03
public class Observer03 implements Observer { @Override public void update() { System.out.println("observer update 03"); }}
0 0
- 观察者设计模式Observer
- 观察者设计模式(observer)
- observer(观察者设计模式)
- Observer(观察者)设计模式
- [设计模式]观察者模式, Observer
- 设计模式--观察者模式(Observer)
- 设计模式-观察者模式(observer)
- [设计模式]Observer观察者模式
- [设计模式]观察者模式(Observer)
- 设计模式-Observer(观察者模式)
- 设计模式--observer观察者模式
- 设计模式 -- Observer 观察者模式
- 设计模式--观察者模式Observer
- 设计模式:观察者(observer)模式
- 设计模式-观察者模式Observer
- 设计模式:观察者模式-observer
- 设计模式 - Observer观察者模式
- 设计模式之Observer(观察者)
- linux之awk用法
- rails+工作环境搭建脚本
- 图片压缩
- Android系统源码编译
- python学习-4-类的使用
- 设计模式:观察者模式-observer
- 如何必须用new来实例化function
- Git
- Eclipse设置自动换行
- 模板函数/类不能导出到动态链接库(DLL)
- hive表级权限配置以及运行调试
- Java使用微信支付-发起统一下单支付接口
- EditText属性
- interface和class的区别