单例模式

单例模式 :生成一个且只生成一个对象实例

props[$key] = $val;
    }

    public function getProperty($key)
    {
        return $this->props[$key];
    }
}

$pref = Preferences::getInstance();
$pref->setProperty("name", "matt");


unset($pref); // remove the reference

$pref2 = Preferences::getInstance();
print $pref2->getProperty("name") . "\n"; // demonstrate value is not lost

执行以上代码后,可得
matt

全局变量不受保护,但不可避免,我们需要一个提供所有类都能访问某个对象存在
问题:

Preferences对象应该可以被系统中的任何对象使用
Preferences对象不应该被存储在会被覆写的全局变量中
系统中不应超过一个preferences对象.
也就是说Y对象可以设置preferences对象个一个属性,而Z对象不需要其他对象就可以直接获取该属性的值
结果:适度使用单例模式,可以不用传递那些不必要的对象.是对全局变量一种改进

你可能感兴趣的:(单例模式)