设计模式:观察者模式-observer
2017-01-11 09:30
513 查看
定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新
实际上是subject中有一个observer的bean序列,当subject更新时,调用该序列中所有的observer的更新,即实现观察者模式
代码
Mainpublic 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 a55f 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"); } }
相关文章推荐
- workerman
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- Android系统源码编译
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- BulkWrite objects may only be executed once
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- .NET url 的编码与解码
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- hdu Monkey and Banana(DP)
- rails+工作环境搭建脚本
- linux之awk用法