为同一逻辑设计不同参数类型的模式选项

时间:2013-07-08 13:44:55

标签: design-patterns

我有两种方法如下:     AddSingleEmployee(员工e);     AddMultipleEmployees(List e);

这两种方法中实现的逻辑是相同的,唯一的区别是对象类型。如果是多个员工,我使用foreach循环来填充Employee属性,否则不会。

是否有任何模式可用于实现此目的?如果是这样,哪一个?

2 个答案:

答案 0 :(得分:1)

没有这种简单的模式 - 只需在第二种方法的循环中调用第一种方法。 C#样本:

public void AddMultipleEmployees(List<Employee> employees)
{
    foreach(Employee employee in employees)
       AddSingleEmployee(employee);
}

此外,无需在方法名称中指定参数类型 - 您可以使用C#或Java等语言中的方法重载:

public void Add(List<Employee> employees)
{
    foreach(Employee employee in employees)
       Add(employee);
}

public void Add(Employee employees)
{
    // code
}   

答案 1 :(得分:1)

您可以将其从接受列表更改为数组,然后您可以将其重构为一个方法:

public void addEmployee(Employee... employees) {
   for (Employee e : Arrays.asList(employees)) {
       // TODO
   }
}

此方法将接受一个或多个员工,并使调用者更容易进行推理。