重构了 model 类