ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设计模式之单例模式(Singleton Pattern)

2019-09-08 16:57:01  阅读:182  来源: 互联网

标签:Singleton PHP 对象 Pattern 实例 单例 设计模式 config


单例模式是最简单的设计模式之一。属于创建型模式,它提供了一种创建对象的最佳方式。使应用中只存在一个对象的实例,并且使这个单实例负责所有对该对象的调用。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1.单例类只能有一个实例。
2.单例类必须自己创建自己的唯一实例。
3.单例类必须给所有其他对象提供这一实例。

class Singleton
{
//创建静态私有的变量保存该类对象
private static $instance;
private $config;
private function __construct($config)
{
$this->config = $config;
}
private function __clone()
{
// TODO: Implement __clone() method.
}

public static function getInstance($config): Singleton
{
if (!self::$instance instanceof self){
self::$instance = new self($config);
}
return self::$instance;
}
public function get(){
echo $this->config,PHP_EOL;
}
}
$d1 = Singleton::getInstance(1);
$d1->get();
$d2 = Singleton::getInstance(4);
$d2->get();

PHP单例模式下是否有线程安全问题?

学习自https://blog.csdn.net/second24/article/details/77606422  感谢博主
PHP语言是一种解释型脚本语言,这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说PHP在语言级别上没办法让对象常驻内存(非cli模式),这和asp、Java等编译型是不同的,比如在Java中单例会一直存在整个应用程序的生命周期里,变量是跨页面级的,真正可以做到这个实例在应用程序生命周期中的唯一性。然而在PHP中,所有变量无论是全局变量还是类的静态成员,都是页面级的,每次页面被执行时,都会重新建立新的对象,都会在页面执行完毕后被清空。PHP单例模式针对单次页面级请求时出现多个应用场景并需要共享同一对象资源时是非常有意义的。
所以PHP中单例模式一般不会有线程安全问题。

标签:Singleton,PHP,对象,Pattern,实例,单例,设计模式,config
来源: https://www.cnblogs.com/caohongchang/p/11487230.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有