简单的OO设计:在哪里添加责任?

时间:2011-02-27 05:51:23

标签: oop design-patterns

我的应用程序域有用户。它还有组织。用户可以创建组织。

我的问题是我应该在哪个控制器上放置CreateOrganisations方法?它属于UserController吗?或者它属于OrganisationController?我该如何做出这个决定?

无论如何,我计划在组织模型上使用Add方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

它属于OrganizationController。

组织控制器应该管理组织模型的任何创建/更改。用户不应该知道创建组织的方式或内容。如果您授予他们创建组织的能力,那么您就是在耦合逻辑。您做出此决定是因为您同时拥有用户和组织控制器。

如果您的用户/组织没有真正证明存在的合理性,那么他们并不真正控制太多,那么将它们合并为一个。

如果两个班级都存在,我投票支持组织。

答案 1 :(得分:0)

就像你说的那样,用户可以创建一个组织,所以除非组织不跟踪所有者(不太可能),否则你应该将CreateOrganization方法委托给用户。我能想到的一个基本想法是:

  • 用户:通过调用OrganizationRepository :: Add(OwnerId)
  • 创建组织
  • 组织:只能根据所有者的ID创建。

如果(且仅当)您不需要跟踪组织的创建者,那么将Add方法直接放在组织上而不需要任何其他内容的想法看起来很好。

希望我能帮忙! 大卫