代码重构之三种取代类型码(类子类状态对象或策略对象)的方式辨析
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码重构之三种取代类型码(类子类状态对象或策略对象)的方式辨析相关的知识,希望对你有一定的参考价值。
1.以类取代类型码
适用情况:类之中有一个数值类型码,但它并不影响类的行为。
重构手段:以一个新的类替换该数值类型码。
重构类图示意:
这里的“不影响类的行为”是什么意思呢?
类型码往往和switch语句一起出现,只有当类型码不会在switch语句中引发行为变化时,才能以类来取代它。或者是根本没有条件语句。
2.以子类取代类型码
适用情况:你有一个不可变的类型码,它会影响类的行为。
重构手段:以类型码的宿主类为基类,并针对每一种类型码各创建一个子类。
重构类图示意:
Replace Type Code with Subclasses的主要做用实际上是搭建一个舞台,让Replace Conditional with Polymorphism得以一展身手。
3.以State/Strategy取代类型码
适用情况:你有一个类型码,它会影响类的行为,但你无法通过继承手法消除它。
重构手段:以状态对象或者具体策略对象取代类型码。
重构类图示意:
参考文章:
Replace Type Code with Class (以类取代类型码)
Replace Type Code with Subclasses (以子类取代类型码)
Replace Type Code with State/Strategy
以上是关于代码重构之三种取代类型码(类子类状态对象或策略对象)的方式辨析的主要内容,如果未能解决你的问题,请参考以下文章