简单的 OO 设计:将 Add 职责放在哪里?

发布于 2024-10-19 13:15:50 字数 191 浏览 1 评论 0原文

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

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

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

有什么想法吗?

My application domain has Users. It also has Organisations. Users can create Organisations.

My question is On which controller should I put the CreateOrganisations method? Does it belong on the UserController? Or does it belong on the OrganisationController? And how do I make that decision?

In any case, I plan to have an Add method on the Organisation model.

Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

阳光的暖冬 2024-10-26 13:15:50

它属于 OrganizationController。

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

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

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

It belongs on the OrganizationController.

The Organization controller should be managing any creation/change to the organization model. The user should have no knowledge on how or what is involved in creating an organization. If you give them the ability to create organizations you are coupling logic. You make this decision because you have both a User and a Organization Controller.

If your user/organization don't really justify existence, aka they aren't really controlling much then merge them into one.

If both classes exist I vote for organization.

吲‖鸣 2024-10-26 13:15:50

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

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

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

希望我能帮忙!
大卫

Like you said, a User can create an organization, so unless the organization doesn't tracks the owner (unlikely), you should have the CreateOrganization method delegated onto the user. A basic idea I can think of would be like:

  • User: Creates organizations by calling OrganizationRepository::Add( OwnerId )
  • Organizations: Can only be created given the id of the owner.

If (and only if) you don't need to track the creator of organizations, then the idea of placing an Add method directly on the organization without requiring anything else looks fine.

Hope I can help!
David

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文