我有这段代码:
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')”等。但这是件好事吗?一次又一次地拥有一个新的视图对象。
在这里与单身人士合作不是更好吗?
答案 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)
如果一个对象实际上不需要多次实例化,请考虑使用静态方法声明一个类。