您的位置:首页 > 其它

设计模式:观察者模式-observer

2017-01-11 09:30 513 查看

定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新



实际上是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
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");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: