C# 助手模式与服务方法

Ada*_*itt 5 c# design-patterns helper

假设我们有以下类:

public class Ticket {
  public int Id { get; set; }
  public string Event { get; set; }
  ...
}

public class TicketService {
  public void acceptTicket(Ticket ticket) {
    ...
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,添加与工单实体相关的静态辅助方法(不需要像服务类那样的状态)的最佳位置在哪里?(请记住,这是整个系统中许多其他实体/服务中的一个实体/服务)。

现在我正在考虑以下可能性:

  1. 在其自己的 .cs 文件中创建一个名为 TicketHelper 的新类。
  2. 直接在 Ticket 类上创建静态 Helper 类
  3. 直接在Service类上创建静态Helper类
  4. 只需将方法直接添加到服务类中,就像任何其他服务方法一样
  5. ...比这些更好的解决方案?

为了清楚起见,这就是我对 #2 或 #3 的意思。

public class TicketService {
  public void acceptTicket(Ticket ticket) {
    ...
  }

  ...

  public static class Helper {
    public static Dictionary<string, List<Ticket>> groupByName(List<Ticket> tickets) {
      // returns the map of name/tickets
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,API 可能如下所示:

Ticket ticket = new Ticket();
List<Ticket> tickets = new List<Tickets>();
TicketService service = new TicketService();
service.acceptTicket(ticket);

// leaving out the creation of a list of tickets...
var groups = TicketService.Helper.groupByName(tickets);
Run Code Online (Sandbox Code Playgroud)

Mor*_*ner 1

我想答案取决于您期望谁来调用该方法。

就个人而言,我会将静态方法放在 TicketService 类上,因为它适用于多个实体,并将其设置为服务本身的私有方法。

然后,我将在服务上创建一个实例方法,以向服务的任何使用者公开该功能。它在一定程度上使 API 更加简洁,并且避免人们必须了解某项是否为静态方法的实现细节。