У меня есть 2 случая, когда метод может считаться шаблоном Factory Design, этот пример на C #, может применяться к другим языкам программирования:
enum NinjaTypes {
Generic,
Katanna,
StarThrower,
Invisible,
Flyer
}
public class Ninja {
public string Name { get; set; }
public void jump() { ... }
public void kickAss() { ... }
}
public class KatannaNinja: Ninja {
public void useKatanna() { ... }
}
public class StarNinja: Ninja {
public void throwStar() { ... }
}
public class InvisibleNinja: Ninja {
public void becomeInvisible() {...}
public void becomeVisible() {...}
}
public class FlyNinja: Ninja {
public void fly() {...}
public void land() {...}
}
public class NinjaSchool {
// always return generic type
public Ninja StandardStudent() {...}
// may return other types
public Ninja SpecialityStudent(NinjaTypes WhichType) {...}
}
Метод StandardStudent()
всегда возвращает новый объект того же типа, SpecialityStudent(...)
, может возвращать новые объекты из разных классов, которые имеют один и тот же суперкласс / базовый тип. Оба метода намеренно не являются виртуальными.
Вопрос в том, являются ли оба метода "Factory Design Pattern"?
Я предполагаю, что SpecialityStudent(...)
есть, а StandardStudent()
нет. Если второго нет, можно ли считать другой шаблон дизайна?