【问题标题】:Simple OO design: where to put the Add responsibility?简单的 OO 设计:把 Add 责任放在哪里?
【发布时间】:2011-02-27 05:51:23
【问题描述】:

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

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

无论如何,我计划在组织模型上添加一个 Add 方法。

有什么想法吗?

【问题讨论】:

    标签: oop design-patterns


    【解决方案1】:

    它属于 OrganizationController。

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

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

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

    【讨论】:

      【解决方案2】:

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

      • 用户:通过调用 OrganizationRepository::Add( OwnerId ) 创建组织
      • 组织:只能在给定所有者 ID 的情况下创建。

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

      希望我能帮上忙! 大卫

      【讨论】:

      • 嗨,David,我认为我的应用程序可能比您设想的应用程序更简单 - 例如没有 OrganisationRepository ......不过,感谢您的回复。
      猜你喜欢
      • 2015-09-16
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多