1. 使用 state 设计模式, 保证任何时候通过取值函数和设值函数访问类型代码
2. 给类型代码设置新的类