1

我正在将一个旧的过程式 PHP 网站重构为一个美味的 OOP 应用程序,并带有少量领域驱动设计以增加风味。

我一直在偶然发现我需要可以具有子类的类的情况,这些子类要么是实体,要么是值对象。

例如,一个 url 对象。那里有无数的网址,所以它们都不能真正成为实体。但有些是非常特殊的 url,比如我的主页。那是一个实体。

另一个例子是“配置对象”。我希望一些配置具有身份,以便我可以创建“预设”并通过在线控制面板管理它们。对于那些需要查找器/存储库来找到它们,并且需要 ORM 来管理它们的生命周期。但是,对于其他“非预设”(具有相同的类层次结构),我希望能够使用动态定制且不需要持久化的数据加载它们。

我设想了很多:

class factory { 
 reconstitute($rawdata) {
  if (raw data has identity)
   load up and return entity version of the class 
  else
   load up and return anonymous/value object version of the class

这一切似乎有点奇怪。

是否有任何模式可以讨论处理此问题的最佳方法?

4

1 回答 1

0

我不确定我是否完全理解你的场景,但是……这真的重要吗?根据我对 EFs/ORMs 的经验,做你想做的事情的最好方法(我能想到的)是让你的实体类根据定义的业务规则决定是否从数据库中加载/持久化自身在课堂里。

$url = new URLClass('KEY_DATA') // returns loaded object url if key if found in database
$url = new URLClass() // returns new url object
$url = new URLClass('', '110011000110010001000011101010010100') // returns new url with data loaded from raw data

不确定这是否真的能帮助你,或者它是否适用。

于 2010-07-29T15:28:51.120 回答