7 PHP 设计模式系列「单例模式(Singleton)」

2022-10-11 20:37:57 171 0
魁首哥

1、模式定义

简单说来, 单例模式 的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点。

常见使用实例:数据库连接器;日志记录器(如果有多种用途使用多例模式);锁定文件。

2、UML类图

3、示例代码

Singleton.php

static  $instance;
 
 /**
 * 通过延迟加载(用到时才加载)获取实例
 *
 * @return self
 */
 public static function  getInstance ()
 {
 if (null === static::$instance) {
 static::$instance = new static;
 }
 return static::$instance;
 }
 /**
 *  构造函数 私有,不允许在外部 实例化 
 *
 */
 private function __construct()
 {
 }
 /**
 * 防止对象实例被克隆
 *
 * @return void
 */
 private function __clone()
 {
 }
 /**
 * 防止被反 序列化 
 *
 * @return void
 */
 private function __wakeup()
 {
 }
}
 

4、测试代码

Tests/SingletonTest.php

assertInstanceOf('DesignPatterns\Creational\Singleton\Singleton', $firstCall);
 $secondCall = Singleton::getInstance();
 $this->assertSame($firstCall, $secondCall);
 }
 public function testNoConstructor()
 {
 $obj = Singleton::getInstance();
 $refl = new \ReflectionObject($obj);
 $meth = $refl->getMethod('__construct');
 $this->assertTrue($meth->isPrivate());
 }
}
 

收藏
分享
海报
0 条评论
171
上一篇:看过来!PHP面试题汇总及答案在这里 下一篇:PHP可没你想那么糟糕,甚至更好!

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码