1.设计模式之----观察者模式
import java.util.ArrayList;
import java.util.List;
public interface Observer {
void undateMeSelf(int count);
}
class StaticDisplay implements Observer {
private int count = 0;
@Override
public void undateMeSelf(int count) {
System.out.println("---上次 count =--"+ this.count +"---本次count=---"+count+"---");
this.count = count;
}
}
class CurrentStaticDisplay implements Observer {
@Override
public void undateMeSelf(int count) {
System.out.println("---本次 count =--"+ count +"----");
}
}
interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyAllObserver(int count);
}
class WatchSubject implements Subject {
private List<Observer> list;
WatchSubject(){
this.list = new ArrayList<>();
}
@Override
public void registerObserver(Observer observer) {
list.add(observer);
}
@Override
public void removeObserver(Observer observer) {
list.remove(observer);
}
@Override
public void notifyAllObserver(int count) {
list.forEach(item->{
item.undateMeSelf(count);
});
}
}
class TestMain{
public static void main(String[] args) {
Observer ObserverCurr = new CurrentStaticDisplay();
Observer ObserverStatic = new StaticDisplay();
Subject subject = new WatchSubject();
subject.registerObserver(ObserverCurr);
subject.registerObserver(ObserverStatic);
subject.notifyAllObserver(5);
subject.notifyAllObserver(10);
}
}
2.注意:这种写法主要是被观察者做了某些动作,观察者被动的做出某些反馈。主要使得被观察者持有观察者属性。