使用oo重构