改变结构分开模块;修改类型判断;增加类型判断模块