Паттерн: Фабричный метод (Factory Method)
Фрагмент: Замещение параметризованного фабричного метода [C++]
  1. Product* MyCreator::Create (Productld id) {
  2. if (id == YOURS) return new MyProduct;
  3. if (id == MINE) return new YourProduct;
  4. // ! YOURS и MINE переставлены
  5. if (id == THEIRS) return new TheirProduct;
  6. // вызывается, если больше ничего не осталось
  7. return Creator::Create(id);
  8. }