php - 我应该把创建对象的通用逻辑放在哪里?
问题描述
因此,我们有一个可以序列化为 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)方法替换它们,并将这个逻辑移动到其他地方准备标准。
解决方案
推荐阅读
- vue.js - 没有文字的下拉菜单
- javascript - AngularJS ng-repeat with track by 渲染速度非常慢
- powershell - PowerShell脚本写出没有根目录的递归文件列表
- javascript - 我如何向后循环数组?
- c# - WPF 在代码隐藏中设置 TextBox 属性
- flutter - “Null”类型不是“图像”颤振问题的“文件”类型的子类型
- laravel - Unisharp Laravel 文件管理器,其中 /public 是 \public_html
- ios - 接收到的随机 URL 的 URL 编码 swift IOS
- c# - FluentAssertions - 比较属性具有不同名称的等效性?
- python - Plotly Dash 回调函数不起作用