当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
使用场景:
import javax.crypto.interfaces.PBEKey;
import java.util.ArrayList;
import java.util.List;
/**
* Description
* Author cloudr
* Date 2020/8/14 21:03
* Version 1.0
**/
class Publish {
public int single;
public List<Reader> readers = new ArrayList<>();
public void setSingle(int single) {
this.single = single;
notifyAllReader();
}
public int getSingle() {
return single;
}
public void addReader(Reader reader){
readers.add(reader);
}
public void notifyAllReader(){
for (Reader reader : readers) {
reader.doSomething();
}
}
}
class Reader{
public Publish publish = new Publish();
public void doSomething() {
}
}
class ReadA extends Reader {
public ReadA(Publish publish){
this.publish = publish;
this.publish.addReader(this);
}
public void doSomething(){
System.out.println("I'm A, single =" + publish.getSingle());
}
}
class ReadB extends Reader{
public ReadB(Publish publish){
this.publish = publish;
this.publish.addReader(this);
}
public void doSomething(){
System.out.println("I'm B, single ="+ publish.getSingle());
}
}
public class PublishReaderDemo{
public static void main(String[] args) {
Publish publish = new Publish();
Reader readerA = new ReadA(publish);
Reader readerB = new ReadA(publish);
publish.setSingle(1);
publish.setSingle(2);
}
}