public class Observable {
private Vector<Observer> observers = new Vector<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
public void deleteObserver(Observer observer) {
observers.remove(observer);
}
public void notify(Object object) {
observers.forEach(observer -> observer.update(object));
}
}
public interface Observer {
void update(Object object);
}
public class Observer1 implements Observer {
private String name;
public Observer1(String name) {
this.name = name;
}
@Override
public void update(Object object) {
System.out.println(name + " observer ==>" + object.toString());
}
}
public interface SubjectInterface {
void doSomething();
}
public class Subject extends Observable implements SubjectInterface {
private String name;
public Subject(String name) {
this.name = name;
}
@Override
public void doSomething() {
System.out.println(name + " is do something");
super.notify(name + " is do something");
}
}
public class Client {
public static void main(String[] args) {
Observer observer1 = new Observer1("Feng Hu");
Subject subject = new Subject("Hua Lee");
subject.addObserver(observer1);
subject.doSomething();
}
}
实现代码2
public interface SubjectInterface {
void doSomething();
}
public class Subject extends Observable implements SubjectInterface {
private String name;
public Subject(String name) {
this.name = name;
}
@Override
public void doSomething() {
System.out.println(name + " is do something");
super.setChanged();
super.notifyObservers(name + " is do something");
}
}
public class Observer1 implements Observer {
private String name;
public Observer1(String name) {
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
System.out.println("Observer1 " + name + " update==> " + arg.toString());
}
}
public class Client {
public static void main(String args[]) {
Observer1 observer1 = new Observer1("Feng Hu");
Subject subject = new Subject("Hua Lee");
subject.addObserver(observer1);
subject.doSomething();
}
}
概念定义:观察者模式也叫做发布订阅模式。定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖他的对象都会得到通知并自动更新优点:观察者和被观察者之间是抽象耦合建立一套触发机制缺点:观察者较多的时候通知的效率问题Java中消息的通知默认是顺序执行,一个观察者卡壳,会影响整体的执行效率(考虑使用异步处理)实现代码1public class Obser...