重构了部分代码