重构——31以子类取代类型码(Replace Type Code with SubClass)

简介: 以子类取代类型码(Replace Type Code with SubClass):你有一个不可变的类型码,它会影响类的行为;以子类取代这个类型码

以子类取代类型码(Replace Type Code with SubClass)

你有一个不可变的类型码,它会影响类的行为;以子类取代这个类型码

一、动机

1、借助多态来处理变化行为,标志就是switch if-then-else

2、把对不同类行为的了解从类用户那儿转移到了类自身

二、做法

1、使用Self Encapsulate Field将类型码自我封装起来

2、为类型码的每一个数值建立一个相应的子类。在每个子类中覆写类型码的取值函数,使其返回相应的类型码值

3、每建立一个新的子类,编译并测试

4、从超类中删除掉保存类型码的字段,将类型码访问函数声明为抽象函数

5、编译,测试

目录
相关文章
|
2月前
|
Java 开发者
JDK 21中的记录模式(Record Patterns):简化对象匹配与解构
本文将详细介绍JDK 21中引入的新特性——记录模式(Record Patterns)。记录模式是一种强大的语言特性,它允许开发者在switch表达式中使用简化的语法来匹配和解构记录类型(record types)。本文将解释记录模式的概念、语法、使用场景以及与传统模式匹配的区别,并通过示例代码展示记录模式在实际开发中的应用。
重构——29以数据类取代记录(Replace Record with Data Class)
以数据类取代记录(Replace Record with Data Class):你需要面对传统编程环境中的记录结构;为该记录创建一个“哑”数据对象
1512 0
|
IDE Java 程序员
equals方法通用约定
equals方法通用约定
862 0
equals方法通用约定
|
编译器
重构——30以类取代类型码(Replace Type Code with Class)
以类取代类型码(Replace Type Code with Class):类之中有一个数值类型码,但它并不影响类的行为;以一个新的类替换该数值类型码
1350 0
重构——33以字段取代子类(Replace Subclass with Fields)
以字段取代子类(Replace Subclass with Fields):你的各个子类的唯一差别只在“返回常量数据”的函数上:修改这些函数,使他们返回超类的某个新增字段,然后销毁子类
1232 0
重构——32以State/Strategy取代类型码(Replace Type Code with State/Strategy)
以State/Strategy取代类型码(Replace Type Code with State/Strategy):你有一个类型码,它会影响到类的行为,但是你无法通过继承手法消除它;以状态对象取代类型码
1489 0
重构——49以函数取代参数(Replace Parameter with Methods)
以函数取代参数(Replace Parameter with Methods):对象调用某个参数,并将结果作为参数,传递给另一个函数,而接受该参数的函数本身也能够调用前一个函数;让参数接受者去除该项参数,并直接调用前一个参数
1678 0
重构——19以对象取代数据值(Replace Data Value with Object)
以对象取代数据值(Replace Data Value with Object):你有一个数据项,需要与其他数据和行为一起使用才有意义;将数据项变为对象
1648 0
重构——50引入参数对象(Introduce Parameter Object)
引入参数对象(Introduce Parameter Object):Range模式;某些参数总是很自然的同时出现;以一个对象取代这些参数
1690 0