观察者模式
观察者模式的定义
定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。
观察者模式就是相当于消息队列的生产者生产一条消息到具体的某个主题之后,同时有多个消费者同时监听着这个主题,一旦生产者生产消息之后,消费者接收到生产者生产消息之后,将会作出一系列的操作
下面是生产者接口
public interface Subject {
//生产者生产消息接口
void sendNotice();
//添加消费者接口
void registerObserver(Observer observer);
}
接下来是消费者接口
public interface Observer {
//消费者消费接口
void update(String msg);
}
生产者实现类
public class ObjectSubject implements Subject{
private List<Observer> list = new ArrayList<>();
private String msg;
public ObjectSubject (String msg){
this.msg = msg;
}
@Override
public void sendNotice() {
for (Observer observer : list) {
observer.update(msg);
}
}
@Override
public void registerObserver(Observer observer) {
list.add(observer);
}
}
第一个消费者
public class Observer01 implements Observer{
private Subject subject;
public Observer01 (Subject subject){
this.subject = subject ;
subject.registerObserver(this);
}
@Override
public void update(String msg) {
System.out.println("Observer01得到号码" + msg );
}
}
第二个消费者
public class Observer02 implements Observer{
private Subject subject;
public Observer02 (Subject subject){
this.subject = subject ;
subject.registerObserver(this);
}
@Override
public void update(String msg) {
System.out.println("Observer02得到号码" + msg );
}
}
具体操作
public class SubjectMain {
public static void main(String[] args) {
ObjectSubject objectSubject = new ObjectSubject("111111111111111111111");
Observer01 observer01 = new Observer01(objectSubject);
Observer02 observer02 = new Observer02(objectSubject);
objectSubject.sendNotice();
}
}
输出结果
Observer01得到号码111111111111111111111
Observer02得到号码111111111111111111111