重构——21将引用对象改为值对象(Change Reference to Value)

简介: 将引用对象改为值对象(Change Reference to Value):你有一个引用对象,很小且不可改变,而且不容易管理;将它变为一个值对象

将引用对象改为值对象(Change Reference to Value)

你有一个引用对象,很小且不可改变,而且不容易管理;将它变为一个值对象

一、动机

1、引用对象变得难以使用,就把它变改为值对象

2、值对象有一个非常重要的特性,它们应该是不可变的

二、做法

1、检查重构目标是否为不可变对象,或是否可修改为不可变对象

2、建立equals()和hashcode()方法

3、编译,测试

4、考虑是否可以删除工厂函数,并将构造函数声明为public

目录
相关文章
|
9月前
|
Java 开发者
JDK 21中的记录模式(Record Patterns):简化对象匹配与解构
本文将详细介绍JDK 21中引入的新特性——记录模式(Record Patterns)。记录模式是一种强大的语言特性,它允许开发者在switch表达式中使用简化的语法来匹配和解构记录类型(record types)。本文将解释记录模式的概念、语法、使用场景以及与传统模式匹配的区别,并通过示例代码展示记录模式在实际开发中的应用。
对象的相等和引用相等的区别
对象的相等和引用相等的区别
|
编译器 C语言 C++
14 C++ - 引用(reference)
14 C++ - 引用(reference)
72 0
|
存储 安全 编译器
02-📝C++核心语法|C++对C的扩展【::作用域运算符、名字控制、struct类型加强、C/C++中的const、引用(reference)、函数】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
02-📝C++核心语法|C++对C的扩展【::作用域运算符、名字控制、struct类型加强、C/C++中的const、引用(reference)、函数】
|
存储 编译器 C++
<c++> &引用概念 | 引用用法 | 引用与指针区别
<c++> &引用概念 | 引用用法 | 引用与指针区别
210 0
index.js:39 错误:修饰类属性失败。请确保提案类属性已启用并设置为使用松散模式。要在规范模式下将提案类属性与修饰器一起使用,请在阶段 2 中等待下一个主要版本的装饰器。 #79
index.js:39 错误:修饰类属性失败。请确保提案类属性已启用并设置为使用松散模式。要在规范模式下将提案类属性与修饰器一起使用,请在阶段 2 中等待下一个主要版本的装饰器。 #79
101 0
|
JSON Java 数据库
代码重构实战-将值对象改为引用对象(Change Value to Reference)
一个数据结构中可能包含多个记录,而这些记录都关联到同一个逻辑数据结构。例如,我可能会读取一系列订单数据,其中有多条订单属于同一个顾客。遇到这样的共享关系,既能将顾客信息作为值对象看待,也能将其视为引用对象
121 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
181 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
|
JavaScript 前端开发
学习javaScript必知必会(7)~Object类、修改this指向、继承关系
学习javaScript必知必会(7)~Object类、修改this指向、继承关系
144 0
学习javaScript必知必会(7)~Object类、修改this指向、继承关系
|
存储 C++
[从C到C++] 1.6 C++引用(Reference)
[TOC] 引用(Reference)是C++语言相对于C语言的又一个扩充,类似于指针,只是在声明的时候用&取代了*。引用可以看做是被引用对象的一个别名,在声明引用时,必须同时对其进行初始化。引用的声明方法如下: 类型标识符 &引用名 = 被引用对象 [例1]C++引用示例: int a = .
3038 0

热门文章

最新文章