feat: 完成观察者模式