开发者社区> inzaghi1984> 正文

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

简介: 将值对象改为引用对象(Change Value to Reference):你从一个类衍生出许多彼此相等的实例,希望将它们替换为同一对象;将这个值对象变成引用对象
+关注继续查看

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

你从一个类衍生出许多彼此相等的实例,希望将它们替换为同一对象;将这个值对象变成引用对象

一、动机

1、系统中的对象可以分为引用对象和值对象,有时候,你会从一个简单的值对象开始,在其中保存少量的不可修改的数据。而后,你可能会希望给这个对象加入一些可修改数据,并确保对任何一个对象的修改都能影响到所有引用此一对象的地方,这时候,你就希望将这个对象变为一个引用对象

2、值对象和引用对象,不可变对象

3、引用对象每个对象代表真实世界的一个实物,你可以直接以“==”检查两个对象是否相等。

4、值对象像是“钱”、“日期”这样的东西,它们完全由其所含的数据值来定义,你并不在意副本的存在。

二、做法

1、使用Replace Constructor with Factory Method

2、编译,测试

3、决定由什么对象负责提供访问新对象的途径

4、决定这些引用对象应该预先创建好,或者是应该动态创建

5、修改工厂函数,令它返回引用对象

6、编译,测试

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
未能初始化 PassportManager 对象。请确保在服务器上正确安装了 Microsoft Passport。
未能初始化 PassportManager 对象。请确保在服务器上正确安装了 Microsoft Passport。 已经不记得 Microsoft Passport 怎么使用了,也没有查到 Microsoft Passport 的安装方法。
891 0
JavaScript创建对象(二)——构造函数模式
在JavaScript创建对象(一)—— 工厂模式中留下了一个问题,就是创建一个对象怎么判断一个对象的类型。换句话说使用下面这种方式: function createPerson(name, age, job){ var o = new Object(); o.
980 0
《JavaScript设计模式》——第2章 写的都是看到的——面向对象编程 2.1两种编程风格——面向过程与面向对象
面向对象编程就是将你的需求抽象成一个对象,然后针对这个对象分析其特征(属性)与动作(方法)。这个对象我们称之为类。面向对象编程思想其中有一个特点就是封装,就是说把你需要的功能放在一个对象里。比如你大学毕业你来公司携带的行李物品没有一件一件拿过来,而是要将他们放在一个旅行箱里,这样不论携带还是管理都会更方便一些。
1342 0
(七)java类和对象
   <span style="font-size:18px"> 一个类定义一个新的数据类型,也就是定义了一个逻辑框架,定义了它的成员之间的关系。可以通过这种类型来声明该类型的对象,通过new关键词来实例化对象,也就是为该类型的对象动态的分配物理内存空间,这个分配过程实在运行时发生的。内存空间是有限的,因此运行时分配内存有可能不成功,会造成运行时异常。<br>     声明时的变量存储的
1007 0
JavaScript 检查一个 JSON 对象中是否对存指这下的 Key
JavaScript 检查一个 JSON 对象中是否对存指定的 Key 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
873 0
Xmanager 远程桌面连接Redhat Linux(引用)
原文链接:http://www.cnblogs.com/huzhiwei/archive/2012/05/07/2487266.html  我用的是RedHat Enterprise Linux 5.4和最新的Xmanager Enterprise3.0。
1816 0
python 深入变量和引用对象
变量和对象 在《learning python》中的一个观点:变量无类型,对象有类型 在python中,如果要使用一个变量,不需要提前声明,只需要在用的时候,给这个变量赋值即可。
954 0
Java常见面试题:ThreadLocal对象处理
ThreadLocal的本身作用就是进行操作对象信息保存,但是它与传统的信息保存不同,它不仅仅保存的是一个引用对象,而且还保存有一个当前对象,也就是说进行数据保存的时候ThreadLocal更像Map集合。
2062 0
Java面向对象高级--final关键字
<p><img src="http://img.blog.csdn.net/20130924184116500" alt=""></p> <p></p> <pre name="code" class="java">class A{ private final String INFO = "INFO" ; // 声明常量 public final void print(){ // 使
810 0
+关注
inzaghi1984
金融IT技术人员
223
文章
62
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载