修改为状态设计模式