Если вы действительно хотите реализовать фабричный шаблон, вы можете сделать что-то вроде:
//Pseudo-code
class ResponseFactory
{
createJSONResponse($data)
{
return new JSONResponse($data);
}
createXMLResponse($data)
...
createDefaultResponse($data)
{
return createJSONResponse($data);
}
}
Хотя, для типов ответов (которых, вероятно, будет только 2 или 3), я думаю, что я бы пошел со статическим фабричным методом Кая.
В ответ на ваш комментарий, почему я предпочитаю стандартную фабрику, каждый метод выглядит так, как указано выше, а не:
createResponse($type, $data)
{
if ($type == 'json')
return new JSONResponse($data);
else if (...)
...
}
Тем более, что во многих случаях ваш абонент выглядит так:
$response = createResponse('json', $data);
Я предпочитаю это:
$response = createJSONResponse($data)
Хотя я должен отметить, что способность php вызывать строку как функцию может создать очень элегантную (хотя и небезопасную) абстрактную фабрику.