重构代码

1， 支持不同版本的切换
2， 不同版本不相互影响