卓象程序员 | 哈尔滨IT培训 | 品质教育,口碑传承 | 为做出口口相传,好口碑的教育品牌而奋斗!

卓象程序员让每一位学员高薪就业 联系我们13101507057

加微信,了解详情
您所在的位置:首页 > 文章 >卓象技术

「卓象程序员」PHP设计模式--单例模式
时间: 2019-11-26 17:19:12     来源: 卓象IT实训基地【原创】


单例模式

定义:简单的说,整个应用一次访问流程中只有一个实例对象的设计模式。


我对单例模式的理解就是可以减少new的操作,因为new操作的时候会消耗内存,如果进行大量的new操作,就会消耗大量的内存。


例如:


class abc {
}
$a = new abc;
$b = new abc;
$c = new abc;
$d = new abc;
echo "内存初始: ".memory_get_usage()."Bn";
echo '<pre>';
var_dump($a);
echo '</pre>';
echo "内存使用: ".memory_get_usage()."Bn";
echo '<pre>';
var_dump($b);
echo '</pre>';
echo "内存使用: ".memory_get_usage()."Bn";
echo '<pre>';
var_dump($c);
echo '</pre>';
echo "内存使用: ".memory_get_usage()."Bn";
echo '<pre>';
var_dump($d);
echo '</pre>';
echo "内存使用: ".memory_get_usage()."Bn";
echo "峰值: ".memory_get_peak_usage()."Bn"


输出结果:


这里每一次new 操作就会增加内存的占用。而使用单例模式则不会造成这种情况。


单例模式的要点


1.某个类只能有一个实例。


2.必须自行创建这个实例。


3.必须自行向整个系统提供这个实例。


下面是创建一个单例类的示例:


/**
* @purpose: 创建一个单例类
* Class Single
*/
class Single {
   /**
    * @var Object 保存类实例的静态成员变量
    */
   private static $_instance;
   /**
    * Single constructor. 私有的构造方法
    */
   private function __construct(){
       echo 'This is a Constructed method;';
   }
   /**
    * @purpose: 创建私有__clone方法防止对象被复制克隆
    */
   private function __clone(){
   }
   /**
    * @return Single|Object 单例方法,用于访问实例的公共的静态方法
    */
   public static function getInstance(){
       if(!(self::$_instance instanceof self)){
           self::$_instance = new self;
       }
       return self::$_instance;
   }
}


现在我们进行实例化输出:



这里可以看出就算多次实例化内存也没有进行增长;


单例模式的用处


1.单例模式可以应用在数据库的操作类上


2.单例模式可应用在网站的计数器上


3.应用程序的日志应用,一般都使用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。


4.Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源。


每日分享技术干货~

报名卓象免费训练营课程

学习最新热门IT技术

找一份自己满意的高薪工作

15天免费学习!!

卓象程序员

★ 零基础,随时体验

★ 免费试听,满意后再报名

★ 小班授课,学习氛围浓厚

★ 口碑相传,80%学员来自口碑推荐

★ 教学严管,闯关式学习保障学习效果

★ 公司地点,哈尔滨市东直路123号7楼