当前位置:  开发笔记 > 编程语言 > 正文

数据映射器模式和重复对象

如何解决《数据映射器模式和重复对象》经验,为你挑选了1个好方法。

我在我正在开发的PHP应用程序中使用数据映射器模式并且有一个问题.目前,您请求具有特定ID的Site对象,映射器将查找该行,创建对象并将其返回.但是,如果对同一站点再次执行此操作,则最终会得到两个具有相同数据的不同对象.例如.:

$mapper = new Site_Mapper();
$a = $mapper->get(1);
$b = $mapper->get(1);

$a == $b // true
$a === $b // false

所以,我的问题是,我应该:

    在mapper中存储实例化的Site对象,这样我就可以在创建一个新对象之前检查它们是否已经存在(如果有多个相同类型的映射器,可能会出现问题)

    与#1相同,但确保每个映射器只有一个实例

    与#1相同但使用静态属性,因此多个实例不是问题

    不要担心它,因为它 可能不是问题

openfrog.. 5

您正在寻找的是身份地图模式.但要注意所谓的"阅读不一致".使用"旧实例"时,数据库可能已经更改.在编辑对象时,另一个用户可能会获得它的实例,更快地更改它并更快地保存它.然后另一个对象再次覆盖所有这些更改.在网络上虽然可能不是一个大问题,因为"页面"快速通过并且没有对象存活超过几个小秒.



1> openfrog..:

您正在寻找的是身份地图模式.但要注意所谓的"阅读不一致".使用"旧实例"时,数据库可能已经更改.在编辑对象时,另一个用户可能会获得它的实例,更快地更改它并更快地保存它.然后另一个对象再次覆盖所有这些更改.在网络上虽然可能不是一个大问题,因为"页面"快速通过并且没有对象存活超过几个小秒.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有