【发布时间】:2013-07-15 15:13:01
【问题描述】:
在理想的世界中,不应依赖单例,控制器中的模型和视图中的模型将是 2 个不同的实例。当控制器设置状态并且视图呈现取决于该状态时,就会出现问题。例如:
class MyController extends Controller {
public function __construct(ModelUsers $cModel)
{
$this->model = $cModel;
}
public function action_Search($username) {
$this->model->filterByUsername($username);
}
}
class MyView extends View {
public function __construct(ModelUsers $vModel)
{
$this->model = $vModel;
}
public function users() {
return $this->model->getUsers();
}
}
如何在控制器模型和视图模型之间共享数据?
【问题讨论】:
-
为什么单身不好?
-
它不是一个“模型”。模型是层,层不能是单例。同样,没有控制器模型或视图模型。有关详细信息,请参阅stackoverflow.com/questions/3499336/…。
-
@Virus721 Singleton 被称为反模式的原因有很多。它们隐藏了对象的生命周期,它们隐藏了依赖关系。他们控制着违反 SRP 的生命周期。确实有很多原因。
-
@Virus721 这根本没有意义。您的代码应该具有完成工作所需的确切内容。而已。一点也不差。单例用于执行 奇异性和 提供全局访问,您的示例不需要这样做。因此,如果它不是约束,请不要添加它。请参阅上面链接的我的答案以及其中的所有链接。