2

我有一个服务层,例如我的控制器和我的域模型(即:存储库、实体等)之间的关系。

在我的服务中,我有“获取”实体的方法,getArticles但我需要返回数组结果或对象集合。

所以我在我的方法中添加了一个参数getArticles($array = false);(实际上我的服务没有强制转换任何对象,它是由存储库完成的,但我需要向我的 API 提供该选项)

我的服务越来越大,我想知道在我的方法参数中定义它是否是个好主意,我认为这是因为我认为我的服务应该是无状态的,但我想知道它是否不会最好在我的服务中有一个方法,当我的服务代理到它时,它基本上可以setUseArray($flag)使用该标志来提供我的存储库。

同样的想法,如果我使用我的服务返回分页结果,我应该在我的每个方法中设置页面和项目计数,还是应该在我的服务中使用全局方法来做到这一点?

有什么反馈吗?

4

1 回答 1

1

像往常一样,这取决于。大多数情况下,这取决于服务对象是否会同时使用。一般来说,使用参数传递所有内容似乎更灵活。将方法参数包装到request实体中可以避免客户端与方法签名的紧密耦合:

class request { 
    bool getArrayInsteadOfCollection;
    int pageNumber;
    int itemsPerPage;
}        

我假设,您有一个 Web 应用程序,并且服务对象仅存在于请求上下文中。在这种情况下,您可以安全地选择以服务对象方式制作“重复”参数。看起来也不错——

getArticles(filterParam) {
    //combine function and service-object-level parameters.
    repository.load(fitler = filterParam, itemsPerPage = this.itemsPerPage...)
}

在我看来,由于灵活性和副作用最小化,传递参数更可取。

于 2011-11-23T08:48:09.963 回答