Написание PHP-приложения и несколько классов, которые только имеют статические методы (нет необходимости в методах экземпляра).Примером является NumericValidator
, который имеет методы, такие как checkInteger($toCheck)
, который проверяет, чтобы убедиться, что передаваемый аргумент имеет тип int, и checkGreaterThan($lOperand, $rOperand)
, который гарантирует, что левый операнд больше правого операнда,и т.д.
Я знаю, что мог бы просто выбросить каждый из этих методов в файл PHP, не помещая их в класс, но я хочу использовать здесь ООП-подход в случае развития APIтребовать создания экземпляра NumericValidator
.
Но возникает вопрос: как класс со 100% -ными статическими методами отличается от класса, реализующего шаблон проектирования Singleton, где каждая ссылка, используемая в базе кода, вызываеттот же экземпляр?
Например, вот как теперь выглядит мой код:
public function doSomething($p_iNum)
{
if(!NumericValidator::checkInteger($p_iNum))
// throw IllegalArgumentException
// ...
}
Но я мог бы включить все статические методы NumericValidator
в нестатические методы экземпляров, вынуждая программиста создавать его экземпляры, а затем реализовывать одноэлементный шаблон проектирования, чтобы вы могли ссылаться только на 1 его экземпляр:
public function doSomething($p_iNum)
{
NumericValidator $nv = NumericValidator::getInstance();
if(!nv->checkInteger($p_iNum))
// throw IllegalArgumentException
// ...
}
Наконец, мой вопрос: что лучше и лучше соответствует передовому опыту? Есть ли какие-то соображения по поводу производительности?Как такой подход повлияет на такие вещи, как параллелизм или запросы от нескольких пользователей?