Я бы не назвал это шаблоном, поскольку это конкретный код.Шаблоны - это просто описания того, что можно сделать как.Это немного похоже на реализацию шаблона Factory, и если вы назовете его Factory, большинство пользователей могут быстрее понять, для чего он предназначен.
Однако, вероятно, его лучше описать как создание параметризованного объекта , так как вы не проверяете, что генерируемый им класс реализует определенный интерфейс, который является частью общего шаблона Factory.
Это гарантирует, что функция возвращает тип с определенным интерфейсом.
class Chooser
{
/**
* @return interface
*/
public static function choose($condition)
{
$class = 'Class_' . ucfirst($condition);
if (!is_a($class, 'interface'))
return NULL;
return new $class();
}
}
Для этого нужны некоторые конкретные версии PHP, и на них могут влиять ошибки в PHP из-за is_a
.Существуют альтернативные способы проверить, реализует ли конкретное имя класса интерфейс.Я оставляю это как упражнение.
Вам также необходимо решить, возвращает ли функция chooser()
NULL
, если условие не приводит к объекту или если оно должно вызвать исключение.