using abstract

使用抽象类进行重构
using advanced enum

使用enum的高级特性