实现了功能类的解耦，修改了部分bug