21.5 观察者模式重构代码