-1

我正在 Zend 中构建一个模型来构建一个包含关键数据的对象,该对象将根据需要被延迟加载并存储在会话变量中。

我正在考虑单例模式,但发现一些材料不清楚的缺点。单例似乎持续存在并且表现得像一个全球性的。但是在 HTTP 环境中(除非它存储在会话或数据库中)可能只会持续与请求一样长。

我想对用户进行身份验证,将用户 ID 等存储在私有变量中,并在当前用户访问信息(即当前地址)时存储该信息以保存数据库调用。

我对单例只持续与会话一样长并且每个后续用户都可以为自己制作一个单例是对的吗?

对利弊的想法表示赞赏。

4

1 回答 1

0

你的问题不是很清楚,但是一个单例会在每个请求之间消失,它只是一种(模式)类,如果你在调用服务器之间不做任何保留它就会消失。

单例的缺点是它通常反映了一个糟糕的设计:单例带来了静态的东西。但是一个好的 OOP 设计应该是保持私有和模块化的,因此它应该在类之间有很少的耦合。如果到处都使用许多类,那么您可能有问题。

TMHO 如果您的应用程序中有一个或两个单例来维护全局请求上下文和用户上下文,那很好。如果您有十个,您可能需要重新设计应用程序的某些部分。

于 2012-08-26T23:53:29.297 回答