您当前的位置: 首页 > 网站编程 > PHP教程 > php设计模式之单例模式使用示例

php设计模式之单例模式使用示例

作者:不详 来源:网络 发布时间: 2014-08-12 13:42 点击:
单例模式也就是只能实例化一次,也就代表在实例化时不可能使用new关键字,下面是使用示例,大家参考使用吧 以下为单例模式代码: 代码如下: ?php class EasyFramework_Easy_Mysql{ protected static $_instance = null; private function __construct(){ } public stati

php设计模式之单例模式使用示例

  单例模式也就是只能实例化一次,也就代表在实例化时不可能使用new关键字,下面是使用示例,大家参考使用吧

  以下为单例模式代码:

  代码如下:

  <?php

  class EasyFramework_Easy_Mysql{

  protected static $_instance = null;

  private function __construct(){

  }

  public static function getInstance(){

  if (self::$_instance === null){

  self::$_instance = new self();

  }

  return self::$_instance;

  }

  protected function __clone(){

  }

  }

  $x = EasyFramework_Easy_Mysql::getInstance();

  var_dump($x);

  ?>

  /*

  * 1.第一步:

  * 既然是单例,也就是只能实例化一次,也就代表在实例化时

  * 不可能使用new关键字!!!!

  * 在使用new关键字时,类中的构造函数将自动调用。

  * 但是,如果我们将构造函数的访问控制符设置为protected或private

  * 那么就不可能直接使用new关键字了!!!

  * 第二步:

  * 无论protected/private修饰的属性或方法,请问在当前类的

  * 内部是否可以访问?---> 可以

  * 第三步:

  * 现在我们根本没有办法得到对象(因为你不能使用new关键字了),

  * 第四步:静态成员(包括属性或方法)在访问时,只能通过

  * 类名称::属性()

  * 类名称::方法()

  * 第五步:如果我现在存在一个静态方法--> getInstance()

  * 那么在调用时就应写成

  * $object = EasyFramework_Easy_Mysql::getInstance()

  * 如果,getInstance()方法可以得到唯一的一个对象

  * 也就代表是所谓的单例模式了!!!

  * 第六步,怎么让getInstace()只得到一个对象呢?

  * 既然要得到对象,那么肯定是:

  * $variabl = new ????();

  * 我们又知道静态属性的值是可以所有的对象来继承的!!!

  * 静态成员是属于类的,而非对象的!

  * 所以:

  * 第七步:声明一个静态的属性,用其存储实例化的对象

  * protectd static $_instance

  *

  * 并且初始值为null

  * 那么我在调用getInstance()方法时,只需要判断其值是否为空即可

  *

  * public static function getInstance(){

  * if(self::_instance === null){

  * self::_instance = new self();

  * }

  * return self::_instance;

  * }

  * 在实例时,一定是这样写:

  * $x = EasyFramework_Easy_Mysql::getInstance();

  * 在第一时调用时,类的$_instance这个静态属性值为null,

  * 那么也就代表,getInstance()方法的判断条件为真了,

  * 也就意味着

  * self::$_instance这个成员有了值了!!!

  * 并且还返回这个值

  * $y = EasyFramework_Easy_Mysql::getInstance();

  * 在第二次或第N次调用时,self::$_instance已经有了值了

  * 也就代表getInstance()方法的条件为假了!!!

  * 也就代表其中的程序代表不可能执行了!!!

  * 也就代表将直接返回以前的值了!!!

  *

  *

  *

  * */
分享到:
本文"php设计模式之单例模式使用示例"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4