【问题标题】:Placement of service methods服务方法的放置
【发布时间】:2011-11-13 17:46:19
【问题描述】:

假设我有两个具有以下方法的服务类:

  • 组服务
    • createGroup()
    • 删除组()
    • updateGroup()
    • findGroup()
  • 用户服务
    • createUser()
    • 删除用户()
    • updateUser()
    • findUser()

现在,我正在考虑这些课程的美学。 想象一下,我们想要实现一个搜索特定组的所有用户的方法。 哪个服务类负责这种方法?

我的意思是,返回值是一个用户(或者可能是用户的集合),但参数(表示组的名称)是一个组。 那么哪个服务类更适合放置这个方法呢?

【问题讨论】:

    标签: oop coding-style


    【解决方案1】:

    两者都不是。该方法属于 Group 类,由 createGroup() 和 findGroup() 返回。但是,如果只有这两个服务是您的选项,请使用 GroupService,因为 GroupService 的所有参数都将组名作为参数。改变方法的返回类型比改变参数更常见。

    【讨论】:

    • 当你需要findUsersByGroupAndManager(String groupName, String managerName)时会发生什么?
    【解决方案2】:

    我建议使用用户服务,因为您正在请求用户实体。服务应保护消费者免受实现细节(持久化机制等)的影响,如果用户是从组服务返回的,则需要了解用户是如何持久化的。

    【讨论】:

      【解决方案3】:

      我将创建另一个名为“Membership”的类,并拥有在特定用户所属的组或组中搜索用户的方法。我倾向于在大量小类而不是少量大类方面犯错。

      【讨论】:

        【解决方案4】:

        取决于你的思维方式,如果你想搜索特定组的用户,那么实际上你想对具有特定条件的用户进行一些搜索,所以最好放在用户服务中,但如果你想要从群中获取一些财产,最好将其放在群服务中,您应该显示您的班级签名和他们的责任。

        【讨论】:

          猜你喜欢
          • 2012-07-25
          • 2017-10-25
          • 1970-01-01
          • 2014-05-14
          • 1970-01-01
          • 2012-08-09
          • 1970-01-01
          • 2012-04-28
          • 1970-01-01
          相关资源
          最近更新 更多