我应该在哪里放置创建对象的通用逻辑?

时间:2019-10-13 10:46:32

标签: php oop design-patterns

因此,我们有一个 RestSearchCriteria 类,可以将其序列化为JSON,并用于查询我们所有的API。

比方说,我只想搜索活动文章,因此我们必须检查状态,publish_from和publish_to字段。此外,应根据所提供的PaginationConfig类等来处理极限和偏移标准参数。在代码中的许多地方都使用了很多逻辑。

我们应该把这个逻辑放在哪里?我们对Factory和Builder模式进行了一些研究,但不确定如何实现这些模式。

我们当前的解决方案看起来像这样:

public function findActiveArticles(
    RestSearchCriteria $criteria,
    PaginationConfig $paginationConfig
): ArticlesResult {
    // mutate the criteria object by adding parameters for article state, publish_from, publish_to
    // mutate the criteria object by setting limit and skip parameters based on the pagination config

    // fetch and return data using criteria
}

这样,代码会在许多地方重复,并且条件对象会发生变异,这很难测试。我们想要的是摆脱这些方法,并用一个 findArticles($ criteria)方法替换它们,并将此逻辑用于准备其他标准。

0 个答案:

没有答案