重新整理代码

看的清楚，更加模块化增强耦合性