- 单例模式
- 解决的问题
preferences对象应该可以被系统中的任何对象使用
preferences对象不应储存在会有被复写的全局变量中
系统中只能有一个preferences对象
- 实现
<?php class preferences{ private static $instance; private function __construct(){ } public static function getInstance(){ if(!(self::$instance instanceof self)){ self::$instance = new self; } return self::$instance; } protected function __clone(){ } } preferences::getInstance(); ?>
- uml类图
- 结果
单例可能被无用,因为单例在系统任何地方都能被访问,可能导致很难调试的依赖问题
单例对象的全局化性质会导致程序员绕过类接口定义,导致依赖关系会被隐藏在方法内部,而不会出现在方法声明中