首页 > 解决方案 > 我应该把创建对象的通用逻辑放在哪里?

问题描述

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

假设我只想在活动文章中搜索,所以我们必须检查 state、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)方法替换它们,并将这个逻辑移动到其他地方准备标准。

标签: phpoopdesign-patterns

解决方案


推荐阅读