版本2 对第一版本进行重构