php设计模式之单例模式使用示例
发布:smiling 来源: PHP粉丝网 添加日期:2020-08-29 19:12:18 浏览: 评论:0
单例模式也就是只能实例化一次,也就代表在实例化时不可能使用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(){
- }
- //phpfensi.com
- }
- $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()方法的条件为假了!!!
也就代表其中的程序代表不可能执行了!!!
也就代表将直接返回以前的值了!!!
Tags: php设计模式
- 上一篇:PHP类继承 extends使用介绍
- 下一篇:php设计模式之命令模式使用示例
相关文章
- ·php设计模式是什么,该如何理解(2014-06-10)
- ·php设计模式 建造者模式 与Adapter(适配器模式)(2014-08-02)
- ·PHP设计模式之建造者模式定义与用法简单示例(2018-10-13)
- ·PHP设计模式之委托模式定义与用法简单示例(2018-10-13)
- ·PHP设计模式概述(2020-02-15)
- ·php设计模式之命令模式使用示例(2020-10-06)
- ·php基础设计模式大全(注册树模式、工厂模式、单列模式)(2021-06-16)
- ·PHP设计模式之简单投诉页面实例(2021-07-11)
- ·实例讲解PHP设计模式编程中的简单工厂模式(2021-07-12)
- ·PHP设计模式之工厂模式详解(2021-08-16)
- ·PHP设计模式之模板方法模式实例浅析(2021-11-02)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)