设计模式:观察者模式-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
原创粉丝点击