У меня есть 2 случая, когда метод может считаться заводским шаблоном проектирования, этот пример написан на 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 (...)
, может возвращать новые объекты из разных классов, которые имеют один и тот же суперкласс / базовый тип. . Оба метода намеренно не являются виртуальными.
Вопрос в том, являются ли оба метода «заводским шаблоном проектирования»?
Я предполагаю, что SpecialityStudent (...)
есть, но StandardStudent ( )
нет. Если второй - нет, можно ли рассматривать его как другой шаблон проектирования?