重构基本完成，可以运行