zoukankan      html  css  js  c++  java
  • 设计模式----单例模式

    单例模式

    (Singleton)用于为一个类生成一个唯一的对象。最常用的地方是数据库连接。 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。

    使用静态方法和静态变量实现单例

    静态属性和静态方法的特点

    1.静态属性和静态方法访问的时候 使用:: 访问符号

    2.静态属性当类定义直接加载到内存中,

    3.静态属性 静态方法 属于类的空间 不属于对象

    先看下不是单例的代码

    1  <?php 
    2 class Mysql{
    3     private $link;
    4     public function __construct($config){
    5         $this->link=mysql_connect($config['host'],$config['user'],$config['password'],$config['db']) or die('connect error');
    6 
    7     }
    8 
    9 }

    缺点:每次使用这个类的时候 都需要实例化一个mysql类 增加内存的开销

    使用单例模式

     1  class  Mysql{
     2      public  $rand='';//随机数 检测是不是一个类
     3       private static $_instance='';
     4      /**禁止通过new 实例化一个对象**/
     5      final private function __construct()
     6      {
     7          $this->rand=rand(10000,99999);
     8      }
     9      public static function instance(){
    10          if(self::$_instance){
    11              return self::$_instance;
    12          }
    13          self::$_instance=new self;
    14          return self::$_instance;
    15 
    16      }
    17      // 禁止克隆
    18      private function __clone()
    19      {
    20          trigger_error('Clone is not allowed.', E_USER_ERROR);
    21 
    22      }
    23 
    24 
    25  }

    要使用这个类的时候 

    1 $a1=Mysql::instance();
    2 $a2=Mysql::instance();
    3 var_dump($a1);
    4 var_dump($a2);

    可以查看rand 的值判断是不是同一个对象。

    对象比较

    对象的比较 就算对象的属性和对象的类型一致 两个对象也不等
    只有一种情况是相等的 两个变量就是同一个对象时。

  • 相关阅读:
    Android Interactive Animation
    Android 笔记
    java 从零开始 第三天
    RGB颜色查询对照表
    Android TextView文字过多时通过滚动条显示多余内容
    Android系统字体规范
    Android 动画之TranslateAnimation应用详解
    Python--day69--ORM的F查询和Q查询
    Python--day69--ORM聚合查询和分组查询
    Python--day69--ORM正反向查找(外键)
  • 原文地址:https://www.cnblogs.com/tl542475736/p/3905849.html
Copyright © 2011-2022 走看看