初步实现重构前的功能，代码结构更明朗