当目标对象状态发生改变,同时通知其他观察者进行相应处理。一对多。
当有新的观察者加入,则只需要增加相应的类,而不是修改原有的方法。
具体实现
controller
@GetMapping("/test1")
public void test() {
order.setState(3);
}
Order
@Component
public class Order {
@Autowired
public List observes;
private int state;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
donotify();
}
public void donotify(){
observes.forEach(i->i.send());
}
//如果沒有使用自動注入
public void regist(Observe observe){
observes.add(observe);
}
public void remove(Observe observe){
observes.remove(observe);
}
}
Observe
public interface Observe {
void send();
}
AObserve
@Component
public class AObserve implements Observe {
@Override
public void send() {
System.out.println("發送短信");
}
}
BObserve
@Component
public class BObserve implements Observe {
@Override
public void send() {
System.out.println("發送郵件");
}
}



