2010-08-02 10 views
0

이 코드가 있습니다마다 양식이 올바르게 작성되지 않았습니다, 그래서싱글 톤을 언제 사용합니까?

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')" ect. 그러나 그것은 좋은 것인가? 새로운 뷰 객체를 몇 번이고 또 다시 가질 수 있습니다.

여기에 싱글 톤을 사용하는 것이 더 좋지 않습니까?

+2

이 패턴에 대한 설명은 http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons를 참조하십시오. – JAL

+1

점점 더 많은 사람들이 싱글 톤을 안티 패턴이라고 부르기 시작합니다. 그것을 사용하지 않도록하십시오. –

답변

11

절대로. 그처럼 간단합니다.

잘못된 양식을 다시 표시하면 어쨌든 다시 제출해야합니다. 그것은 완전히 새로운 요청이 될 것입니다. 응용 프로그램은 전체 부트 스트랩 및 디스패치를 ​​통과합니다. 싱글 톤은 PHP에서 싱글 톤이 요청을 위해서만 살기 때문에 싱글 톤은 여기에서 도움이되지 않습니다.

또한 Singletons are much more difficult to test입니다. Dependency Injection을 사용할 때 Singleton을 피할 수없는 UseCase를 아직 보지 못했습니다. 심지어 Erich Gamma, 싱글 톤 패턴의 발명가 중 하나는, 현재이 패턴을 의심 : 당신은 싱글 톤을 피하는 오프 최고

"I'm in favor of dropping Singleton. Its use is almost always a design smell"

.

0

개체를 실제로 두 번 이상 인스턴스화 할 필요가없는 경우 정적 메서드로 클래스를 선언하는 것이 좋습니다.

관련 문제