什么时候使用单身人士?

时间:2010-08-02 11:55:19

标签: php model-view-controller singleton controller

我有这段代码:

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 个答案:

答案 0 :(得分:11)

永远不会。很简单。

再次显示无效表单时,无论如何都必须重新提交。这将是一个全新的请求。该应用程序将通过完整的引导程序和调度。单身人士在这里没有帮助,因为PHP中的单身人士也只会为请求而活。

此外,Singletons are much more difficult to test。我还没有遇到过使用Dependency Injection时无法避免使用Singleton的UseCase。即使Erich Gamma,Singleton模式的发明者之一,现在也怀疑这种模式:

  

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

你最好避开单身人士。

答案 1 :(得分:0)

如果一个对象实际上不需要多次实例化,请考虑使用静态方法声明一个类。