当目标对象状态发生改变,同时通知其他观察者进行相应处理。一对多。
当有新的观察者加入,则只需要增加相应的类,而不是修改原有的方法。
具体实现
controller
@GetMapping("/test1") public void test() { order.setState(3); }
Order
@Component public class Order { @Autowired public Listobserves; 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("發送郵件"); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)