我有一个服务层,它执行我的控制器和我的域模型之间的关系(即:存储库,实体等)。
在我的服务中,我有一个“获取”实体的方法,比如getArticles
,但我需要返回一个数组结果或一个对象集合。
所以我在我的方法getArticles($array = false);
中添加了一个参数(实际上我的服务没有转换任何对象,它是由存储库完成的,但我需要为我的API提供该选项)
我的服务越来越大,我想知道在我的方法参数中定义它是否是一个好主意,我认为这是因为我认为我的服务应该是无状态的,但我想知道它是否会最好在我的服务中有一个方法,它基本上做setUseArray($flag)
并在我的服务代理它时用我的存储库提供。
同样的想法,如果我使用我的服务来返回分页结果,我应该在每个方法中设置页面和项目计数,还是应该在我的服务中使用全局方法来做到这一点?
有任何反馈吗?
答案 0 :(得分: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...)
}
在我看来,由于灵活性和副作用最小化,传递参数更为可取。