我试图将我的 DAL 与我的业务层分开,并且在这样做时,我决定避开任何 ActiveRecord 方法并采用 DataMapper 方法。换句话说,我的域对象不会处理自己的持久化。这样做,我似乎在侵犯“贫血域模型”反模式。例如,我的程序中的一个实体是一个组织。
一个组织可以这样表示:
class Organization {
private $orgId;
private $orgName;
// getters and setters
}
所以基本上这个组织除了充当一些数据的“包”(正如 Martin Fowler 所说)之外什么都不做。在 PHP 世界中,它只不过是一个美化的数组。与之相关的行为为零。
而在程序中的行为,我一直坚持“服务级别”类,比如 OrganizationService,它主要充当这些对象和 DAL 之间的中介。
除了 PHP 的潜在扩展问题(我确实有其他原因为什么我坚持在这些对象中“装袋”我的数据),这种方法完全不可行吗?
在这些情况下,您如何处理您的领域模型?也许一个组织一开始就不属于我的领域?