Я впервые попробую использовать фабричный метод. Похоже, что есть 2 способа сделать это, и я не уверен, когда использовать какой (или если один из них не так?).
1) Создайте абстрактный класс, у которого есть метод, который переопределяется подклассами:
public abstract class EmployeeCreator
{
public abstract Employee FactoryMethod();
}
public class DeveloperCreator : EmployeeCreator
{
public override Employee FactoryMethod()
{
return new Developer();
}
}
2) Создайте класс с одним фабричным методом:
public class EmployeeFactory
{
public static Employee CreateEmployee(EmployeeType type)
{
if (type == EmployeeType.Developer)
return new Developer();
else
return new Secretary();
}
}
Кажется, что в моем случае № 2 будет намного проще, потому что мне не нужно будет создавать все эти подклассы "создателя", которые на самом деле мало что делают, кроме как вернуть правильный тип сотрудника.
Но все еще используется фабричный шаблон?