【发布时间】:2014-07-17 17:42:12
【问题描述】:
我正在创建一个 Web 应用程序,用户可以在其中提交不同类型的内容。目前,处理内容并保存它是由 ContentService 之类的东西完成的,它进一步将任务委托给 ContentMapper(对于 DataMapper 模式)等。
随着应用程序的增长,提交ContentObject 需要涉及其他任务。例如,需要调用PermissionService(确定允许哪些用户查看内容)和NotificationService(确定如何通知用户新内容)。
我应该将这些辅助服务(权限/通知)调用放在控制器还是服务中,以实现创建结构化代码的目标?
也就是说,我要这样做吗:
ContentService->createNewContent()
// in ContentService
public function createNewContent($contentObject) {
// Database calls and other stuff, validation..
PermissionService->determinePermissionsForContent($contentObject)
NotificationService->notifyUsers($contentObject)
}
还是我将这些东西(因为它们更加独立并且我试图遵守 SRP)放入控制器中?
即
// in ContentController
$contentObject = // something creates the contentObject from user-data
ContentService->saveNewContent($contentObject)
PermissionService->determinePermissionsForContent($contentObject)
NotificationService->notifyUsers($contentObject)
我主要感到困惑,因为辅助服务基本上仅在保存内容时运行,并且它们可能需要某些数据(即数据库 ID),这就是我在 ContentService 中考虑它们的原因。 另一方面,如果我将它们放在控制器中,这似乎更符合 SRP,因为 ContentService 并没有做太多事情。
哪个是首选?
【问题讨论】:
标签: php oop object design-patterns model-view-controller