Заводской шаблон, Другой шаблон или нет шаблона вообще?

У меня есть 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 ( ) нет. Если второй - нет, можно ли рассматривать его как другой шаблон проектирования?

8
задан Heisenbug 1 July 2011 в 00:10
поделиться