4

我正在尝试找出在 PHP 中使用规范模式的最佳方法,其中规范可以(可选地)转换为 PHP。

我正在探索一些新的方向,并测试它们的工作情况。代码和想法在我的脑海中仍然很不清楚。

最小的接口是这样的:

interface IRepository {
    public function get(ISpecification $specification);
}

interface ISpecification {
    public function isSatisfiedBy($candidate);
}

如果存储库隐藏了 sql 数据库,则规范需要转换为 sql。添加 ->toSQL() 方法似乎是临时的。转换规范的类也是一种选择,但最终生成 sql 似乎需要很多开销。

想法赞赏。

4

1 回答 1

3

引用 POEAA(第 324 页):

在幕后,存储库元数据映射 (329)查询对象 (316)结合起来,以根据标准自动生成 SQL 代码。无论标准知道如何将自己添加到查询中,查询对象 (316)是否知道如何合并标准对象,或者元数据映射 (306)本身控制交互是一个实现细节。

此描述中的标准当然是您的规范模式。我想说toSQL当应用程序相对较小时,您建议的在标准对象上使用方法的方法很好。就像您已经说过的那样,走其他路线更加困难,但它也提供了更大的灵活性和解耦。最后,只有你自己可以决定。

于 2012-02-18T13:18:02.923 回答