Когда использовать синглтон? - PullRequest
0 голосов
/ 02 августа 2010

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

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») ». Но хорошо ли это? Снова и снова и снова иметь новый объект просмотра.

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

Ответы [ 2 ]

11 голосов
/ 02 августа 2010

Никогда.Все просто.

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

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

"Я за то, чтобы отказаться от синглтона.почти всегда дизайнерский запах "

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

0 голосов
/ 02 августа 2010

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

...