基本类型偏执:


含义:以类代替原来单独存在的数值

实现方法:

  1. 如果是单独存在的数据值,考虑用Replace Data Value with object
  2. 如果想要替换的数据值是类型码,且这些类型码不影响行为,则运用Replace Type code with Class
    使用枚举可以代替
  3. 如果是与类型码相关的条件表达式,可以使用Replace Type Code with Subclass
    或 Replace Type Code with State/Strategy(以状态/策略取代类型码)
  4. 如果有一组总是放在一起的字段,运用Extract Class(提取类)
  5. 如果在参数列中看到基本类型数据,可以使用Introduce Parameter Object

Replace Data Value with object:

1.为数值新建一个类,该类的类型与这个数值的类型一样,添加其构造函数和get/set方法
2.将原来类中的数值替换为前面新建的类,修改其get,set方法
3.如果新类产生了过多实例,想合成为一个,可以使用Change Value To Reference(将值对象改为引用)

public class User {/***private String address;public User(String address) {this.address = address;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}**/private Address address;public User(String address) {this.address = new Address(address);}public String getAddress() {return address.getDetail();}public void setAddress(String address) {this.address = new Address(address);}
}
public class Address {private String detail;public Address(String detail) {this.detail = detail;}public String getDetail() {return detail;}public void setDetail(String detail) {this.detail = detail;}
}

重构思路:把函数中那些数值尽量用类去替代之。类中写好构造函数,set/get方法,然后把原代码中对这个数值的操作部分改为这个类。重构完后,继续使用Change Value to Reference(将值对象改为引用) 继续优化代码。

平行继承体系:

如果发现每当为某个类增加一个子类,必须也为另外一个类相应增加一个子类, 这时需要考虑消除这种重复性。方法是让一个继承体系的实例引用另一个继承体系的实例。

转移方法
转移字段

令人着迷的暂时值域:


类中某个字段只为某些特殊情况而设置。把这些变量提炼到一个独立的类中。提炼后的新对象是个函数对象



基本类型偏执-平行继承体系-令人着迷的暂时值域相关推荐

  1. Request和Response-学习笔记01【Request_原理和继承体系、Request_获取请求数据】

    Java后端 学习路线 笔记汇总表[黑马程序员] Request和Response-学习笔记01[Request_原理和继承体系.Request_获取请求数据][day01] Request和Resp ...

  2. java 异常继承体系_1、异常概述和继承体系 2、原因及处理方式 3、运行时异常 4、重写异常处理 5、Throwable类常见方法 6、自定义异常...

    01异常的概述 * A: 异常的概述 * a:什么是异常 * Java代码在运行时期发生的问题就是异常. * b:异常类 * 在Java中,把异常信息封装成了一个类. * 当出现了问题时,就会创建异常 ...

  3. Python 异常继承体系

    Python 异常继承体系(version python3.4) 以下是按照 The Python Standard Library  翻译 The class hierarchy for built ...

  4. Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题)

    Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题) 1.Request(请求) Request继承体系 要想了解RequestFacade中都提供了哪些方法, ...

  5. C++编程进阶5(内联函数、如何降低编译成本、处理继承体系中同名不同参的成员函数、私有虚函数)

    十七.内联函数 在https://blog.csdn.net/Master_Cui/article/details/106391552中,已经简单的说过内联函数的作用. 函数体较小的内联函数经过编译后 ...

  6. 关于虚继承(在钻石继承体系中,一定要用虚继承!)

    在钻石继承体系中,一定要用虚继承! 1.下面的代码块儿无法通过编译,原因是,A3无法确定自己到底是用哪一个父类中的函数. class A { public: virtual void f(){} vi ...

  7. ADO.NET Entity Framework如何:通过每种类型一个表继承以定义模型(实体框架)

    本主题介绍如何手动创建具有每种类型一个表继承层次结构的概念模型.每种类型一个表继承使用数据库中单独的表为继承层次结构中的每种类型维护非继承属性和键属性的数据. 说明: 建议使用 ADO.NET 实体数 ...

  8. C++继承体系下的对象构造

    继承体系下的对象构造 继承下的对象构造 虚拟继承 初始化"虚基类子对象" vptr的设置 总结 继承下的对象构造 class Point{public:Point(float x ...

  9. python中类的构成_Python中类型关系和继承关系实例详解

    本文详细介绍了Python中类型关系和继承关系.分享给大家供大家参考.具体分析如下: 如果一个对象A持有另一个对象B的ID,那么检索到A之后就可以检索到B,我们就说存在一个A到B的导航.这种导航关系使 ...

  10. python inspect —— 查看类的继承体系

    1. inspect.getmro mro:method resolution order: 查看 defaultdict 的继承体系: >> import inspect >> ...

最新文章

  1. Qt中文手册 之 QTableWidgetItem
  2. pandas版xml json excel互转
  3. 在一个集合S中寻找最大的C使A+B=C且A,B,C均在集合当中
  4. CentOS 7源码安装httpd服务
  5. 给未来的自己一封信计算机,给未来的自己一封信
  6. 克隆虚拟机启动网卡提示错误 Device eth0 does not seem to be present, delaying initialization...
  7. 电脑技巧:键盘上ESC按键的使用小技巧,你都知道吗?
  8. django ORM创建数据库方法
  9. 如何成为一名优秀的C程序员
  10. c如何接收java指令_java指令和javac指令总结
  11. 30岁以后的人生,如何来逆袭?
  12. 无论干什么事都要对自己有信心!
  13. 【易实战】Spring Cloud Greenwich Ribbon:负载均衡的服务调用
  14. 【MATLAB】— xlsread和xlswrite函数
  15. IBM技术论坛:使用 Cobertura 和反射机制提高单元测试中的代码覆盖率
  16. ReLU函数 Vs Sigmoid 函数——XOR问题究竟用那个好
  17. 十大在线编程学习网站 .
  18. R语言实现主成分分析与典型相关分析
  19. 教你如何拿到华为offer!华为面试流程及面试题解析
  20. 魔都记----在美团工作

热门文章

  1. Winedit 下载第三方库
  2. 淘宝数据分析实战篇(附源码)
  3. 红米k30pro工程测试代码_红米手机如何进行硬件测试
  4. 2022年医院三基考试肿瘤相关训练题及答案
  5. 手把手带你撸一个校园APP(一):项目简介
  6. 360导致某些页面变为淡绿色
  7. 从哪些方面评价一款在线客服系统产品
  8. 计算机是人类的好伴侣 作文,电脑真好作文
  9. 浅谈CAPM和因子模型
  10. macOS Catalina 以上版本使用不了 PPTP协议的(shimo 无法正常使用)