PHP 单件模式(单态模式)
时间:2010-06-12 来源:yueming
class DbConn { |
组合使用静态方法和静态变量保持这个实例,并且设置构造函数为私有,例化类而创建实例,这个类就不能被直接实例化。
Monostate Pattern(单态模式):类单件模式
class ApplicationConfig { |
在PHP中,通过把一个全局变量绑定到一个实例变量来实现MonoState。
这个技巧的核心是$this->state =& $GLOBALS[$key]; 。在确定$GLOBALS[$key]是一个数组后,代码绑定一个全局数组的引用给类变量$this->state。从而,任何$this->state的改变都自然而言地同步到全局数组,包括类的其它实例。
这个技巧能够在任何PHP的自动全局(superglobal)数组使用,尤其在用户消息队列$_SESSION中有很显著的效果。MonoState能通过你的代码为用户存储一系列的使用信息(要显示的信息可能是从另外一个页面传入的)。
资料:
- Gloabal Variables Are Bad
- Singleton Global Problems
- Monostate Pattern