PHP实现JAVA单线程模式

xiaoxiao2022-06-23  94

通常来说,类和对象(类的实例)之间是一对多的关系。但是某些情况下,我们只 需要一个类的一个实例。比如多个实例的多样性反倒会带来一些不可控因素,多 次的实例化,是一种资源的浪费,降低了效率;又如他们是工厂对象(factory object),用来创建系统中的其他对象,等等。这时候,较好的处理方式就是让类 的实例具有单一性:保障这个类在运行过程中最多生成一个实例( Singleton 模 式),或者让所有的实例保持一致( Monostate 模式)。 PHP 下实现 Singleton 模式示例: <?php class Singleton { private static $instance; private function __construct() { } public static function instance() { if(self::$instance == null) { self::$instance = new Singleton(); } return self::$instance; } } ?> 创建 singleton 类实例就只能够是这样了: $instance = Singleton::instance(); // 这样是错误的: $instance = new Singleton(); 详细分析一下 PHP 下实现的 singleton 模式的特征: 1. 一个 static, private 属性:用来保存一个实例,static 保证类不被实例化也能够被类方法调用, private 保证它不被类的实例等改变。 2. 一个 private 的构造方法:不允许该类在本类之外的地方实例化。 3. 一个 static, public 方法:负责创建实例并保证其唯一性。static 使该方法可以不被实例化即可被调用。
转载请注明原文地址: https://www.6miu.com/read-4952934.html

最新回复(0)