以子类取代类型码(Replace Type Code with SubClass)
你有一个不可变的类型码,它会影响类的行为;以子类取代这个类型码
一、动机
1、借助多态来处理变化行为,标志就是switch if-then-else
2、把对不同类行为的了解从类用户那儿转移到了类自身
二、做法
1、使用Self Encapsulate Field将类型码自我封装起来
2、为类型码的每一个数值建立一个相应的子类。在每个子类中覆写类型码的取值函数,使其返回相应的类型码值
3、每建立一个新的子类,编译并测试
4、从超类中删除掉保存类型码的字段,将类型码访问函数声明为抽象函数
5、编译,测试
时间: 2024-11-08 19:31:34