0

我正在将一些旧的程序代码转换为 OOP。

假设我有一些程序代码将记录标记为已删除并记录完成的时间。

UPDATE
toys
SET
is_trashed = 1,
trashed_date_timestamp = NOW()
WHERE
id = ??

我从有关 OOP 的各种书籍中收集到,在面向对象的范式中,您:

  1. '找到'一个特定项目作为对象,然后
  2. 修改其属性,然后
  3. 使用 ORM 映射器上的通用“更新”方法将其属性保存到数据库

这与我的代码中使用的以过程/数据库为中心的方法形成对比,在该方法中,我运行 SQL 查询以使用数据库中的特定值更新特定记录,以实现特定的属性更改

所以,假设我想将此代码转换为面向对象的范例。

  1. 我通过它的 id 找到我的对象,并且
  2. 修改其属性:
    • 我将 isTrashed 属性设置为 TRUE
    • 我将rashedDateTimestamp 属性设置为???

啊!?

当我尝试将rashedDateTimestamp 属性设置为NOW时,它会引发一大堆问题。

  • 现在是什么?我宁愿确保它是数据库时间的 NOW(),而不是服务器上的 NOW。
  • 玩具对象的客户如何处理获取和设置垃圾日期时间戳属性?

我可以想出很多“给这只猫剥皮”的方法,但想知道是否有任何模式可以解决这个问题。

或者这个特性在 OO 范式中被证明是不可能的,我应该使用类似“事件观察者”的东西。

简而言之 - 您如何以合理的准确性将NOW存储到对象属性中?

4

1 回答 1

1

您存储一个DateTime没有任何传递参数的对象。该DateTime对象将默认为当前时间。

于 2012-12-04T17:24:33.350 回答