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

     1 //单例模式
     2 //目的:为了控制对象的数量(只能够有一个,相当于类的计划生育)
     3 //针对场景给用户在这个场景里只能造出一个对象,不能多个例如DW窗口在一个页面只能开一个窗口
     4 
     5 //类
     6 class Ren
     7 {
     8      public $name;//成员变量 跟名字
     9      //(图2)成员变量用来储存对象
    10      static public $dx;//(如图3)判断这个变量是不是空的
    11      
    12      private function __construct()//private私有的在外界访问不到,也就是不能造对象了
    13      {
    14          
    15      }
    16      //方法
    17      static function DuiXiang()//早对象的方法,返回有个对象
    18      {    
    19          if(empty(self::$dx))//(图3)
    20          {
    21             self::$dx = new Ren();//(这个等于图4)
    22         }
    23         return self::$dx;//这样就能控制有一个对象$dx不能这样写必须用个关键字self::$dx调用
    24          //(图4)return new Ren();//返回的对象
    25      }//现在钓不到,如何让它钓到加静态方法如下用类名钓对象方法(例子1加了return还是实现不了只能造一个出来。解决方案根据封装想到加控制条件)让对象只能造一个出来,在这个大类里再做一个变量用来储存该对象(如图2)将来要放在这个方法里面使用的,应为这个是一个静态方法静态方法只能方静态的所以上面(图2)只能做静态的才能访问
    26      
    27 }
    28 //使用类就要用到Ren类里面的对象方法
    29 $r = Ren::DuiXiang();
    30 $r->name = "张三";//对象里面name赋值如张三。如果在用这个类如(图5)
    31 
    32 $r1 = Ren::DuiXiang();//(图5)也显示张三,如果把$r1值改成李四那么$r也会变李四
    33 $r1->name = "李四";//这个值就会显示李四
    34 
    35 var_dump($r1);//看看r1这个对象是不是使用过的r这个对象
    36 
    37 /*//(例子1)     
    38 $r = Ren::DuiXiang();
    39 var_dump($r);
    40 */
    41      
    42     
    43 
    44 下面的先不看捋顺再看
    45 //$r = new Ren();//构造函数变成私有的,但是这样在外界一个对象都做不了。要解决在这可以造一个对象,那就是做个方法相当于封装
    46 
    47 
    48 //对象
    49 /*$r = new Ren();//new调用构造函数Ren()
    50 $r->name = "张三";
    51 
    52 $r1 = new Ren();
    53 $r1->name = "李四";
    54 */
    55 
    56 
    
    
  • 相关阅读:
    Python学习笔记(10):异常
    SharePoint中RichTextBox的Required验证
    Python学习笔记(6):模块
    Python学习笔记(4):控制流
    Python学习笔记(5):函数
    解决SharePoint中GridView导出Excel按钮的问题
    Python学习笔记(8):面向对象
    如何在SharePoint中创建Custom Master Page
    main cannot be resolved or is not a field
    c# 格式化输出字符串
  • 原文地址:https://www.cnblogs.com/aqxss/p/6182689.html
Copyright © 2011-2022 走看看