update
update 重构XYObserver