Когда использовать синглтон?

У меня есть этот код:

class MyController {
public function newUserAction()
{
    $view = new View('myfrontend');
    if($this->request->isPost())
    {
        $form = new MyForm;
        $posts = $this->request->getPosts();
        if($form->isValid($posts))
        {
            //...
        }
    }
    $view->display();
}

}

Итак, каждый раз, когда форма не заполняется правильно, процесс начинается снова и так каждый раз, когда появляется "новый вид (" myfrontend "). Но разве это хорошо? Чтобы иметь новый объект просмотра снова и снова и снова.

Не лучше ли работать с синглонами здесь?

Ответ 1

Никогда. Просто как это.

Если вы снова видите недопустимую форму, она должна быть повторно отправлена. Это будет совершенно новый запрос. Приложение будет проходить через полную загрузку и отправку. Синглтон не помог бы здесь, потому что Singletons в PHP также будут жить только для запроса.

Кроме того, Синглтоны гораздо труднее проверить. Мне еще предстоит встретить UseCase, где нельзя избегать Singleton при использовании Injection Dependency. Даже Эрих Гамма, один из изобретателей шаблонов Синглтона, сейчас сомневается в этом шаблоне:

Я за отказ от Singleton. Его использование почти всегда является запахом дизайна

Лучше всего избегать синглтонов.

Ответ 2

Если объект не нужно создавать экземпляры более одного раза, рассмотрите вместо него класс с статическими методами.