Когда я должен использовать singleton pattern и static (статические методы и статические свойства)?Когда вы должны использовать одноэлементный шаблон и статические методы?
Я читал много блогов/учебников/комментариев, которые всегда говорят об одноэлементном шаблоне, поэтому я никогда не использую его.
Но опять же, многие фрэш-рамки используют синглтоны, такие как Laravel, которые становятся все более популярными в наши дни.
Для примера, в Laravel,
$app->singleton(
'Illuminate\Contracts\Http\Kernel',
'App\Http\Kernel'
);
$app->singleton(
'Illuminate\Contracts\Console\Kernel',
'App\Console\Kernel'
);
$app->singleton(
'Illuminate\Contracts\Debug\ExceptionHandler',
'App\Exceptions\Handler'
);
Если вы проверяете его до конца, вы можете Синглтон широко используется в Laravel (кажется). Так, что происходит?
Singleton - это первая буква в STUPID that we should avoid насколько это понятно.
Но я считаю, что некоторые программисты сильно расходятся - Its the best way to do it in that situation - if you need to use them, use them. Simple as that.
Итак, в каких ситуациях , то вы должны использовать одиночек, если вы не согласны с тупыми?
Кроме того, в Laravel, вы увидите много из них,
$users = DB::table('users')->get();
Это либо одноточечно или статический метод Я думаю (я не очень хорошо Laravel - только начинает смотреть внутрь).
Это кажется простым в использовании, но как насчет тестирования, сложно ли их протестировать?
Я вижу этот метод (DB::something(...)
) много в других рамках. Они кажутся не очень хорошей идеей, но многие тоже не согласятся. Итак, в какие ситуации вы должны использовать статические методы?
Спасибо за ответ Брайан. 'когда вам нужно сконфигурировать ресурс, который стоит дорого строить'', так что дорого строить? соединение db - так же, как Laravel? – oasis