实施战略模式.我每次都要"新手"吗?

Mar*_*nce 3 c# strategy-pattern

我正在尝试实施战略模式.这是我实施的一部分:

public List<string> GetOrderedEmployeeNames(IOrderByStrategy strategy)
{
   return GetEmployeeFullNames().OrderBy(strategy.Order);
}
Run Code Online (Sandbox Code Playgroud)

现在每次我调用这个函数我都要写:

var employees = GetOrderedEmployeeNames(new OrderByFamilyName());
Run Code Online (Sandbox Code Playgroud)

每次正确的方式或者我是否错误地实施了这个策略?

Joe*_*Joe 7

如果实现的类IOrderByStrategy没有任何状态(即每次都表现相同),那么你也可以将它存储在某个地方,以节省必须重新创建new.

也就是说,这new是一个非常有效的操作,如果你没有在一个紧凑的循环中调用它,那么继续做你正在做的事情可能会更简单.