我正在将一个旧的过程式 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
这一切似乎有点奇怪。
是否有任何模式可以讨论处理此问题的最佳方法?