将值更改为Reference
问题
因此,您需要用单个对象替换单个类的许多相同实例。
解决方案
将相同的对象转换为单个引用对象。
之前

后

为什么重构
在许多系统中,对象可以分为值和引用。
参考文献:当一个真实世界的对象只对应程序中的一个对象时。参考资料通常是用户/订单/产品等。对象。
值:一个真实世界的对象对应程序中的多个对象。这些对象可以是日期、电话号码、地址、颜色等等。
参考和值的选择并不总是明确的。有时会有一个简单的值和少量不变的数据。然后就有必要添加可更改的数据,并在每次访问对象时传递这些更改。在这种情况下,有必要将其转换为引用。
好处
- 对象包含关于特定实体的所有最新信息。如果对象在程序的一部分中发生了更改,则这些更改可以从使用该对象的程序的其他部分访问。
缺点
- 引用更难实现。
如何重构
使用用工厂方法替换构造函数在要从中生成引用的类上。
确定哪个对象将负责提供对引用的访问。当您需要一个对象时,您现在需要从存储对象或静态字典字段中获取它,而不是创建一个新对象。
确定是提前创建引用还是根据需要动态创建引用。如果对象是预先创建的,请确保在使用前加载它们。
更改工厂方法,使其返回引用。如果提前创建了对象,则决定如何处理请求不存在的对象时的错误。你可能还需要使用重命名方法通知该方法只返回现有对象。