php单态设计模式(单例模式)实例


Posted in PHP onNovember 18, 2014

单态设计模式也叫单例模式:

1.单态设计模式含义:

单态模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。

2.单台模式的三个关键点:

① 需要一个保存类的唯一实例的静态成员变量;
②构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义;
③必须提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一实例的一个引用 。

<?php

class DB {

    private static $obj = null;           //声明一个私有的,静态的成员属性$obj

    private function__construct() {       //私有构造方法,只能在类的内部实例化对象

        echo "连接数据库成功<br>";

    }

    public static function getInstance() {  // 通过此静态方法才能获取本类的对象

        if(is_null(self::$obj))  //如果本类中的$obj为空,说明还没有被实例化过

            self::$obj = new self();  //实例化本类对象

            return self::$obj;  //返回本类的对象

    }

    public function query($sql) {  //执行SQL语句完成对数据库的操作

        echo $sql;

    }

}

    $db = DB::getInstance();        //只能使用静态方法getInstance()去获取DB类的对象

    $db -> query("select *from user");       //访问对象中的成员

?>
PHP 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
PHP数组相关函数汇总
Mar 24 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
laravel入门知识点整理
Sep 15 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 #PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 #PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 #PHP
一个比较不错的PHP日历类分享
Nov 18 #PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 #PHP
PHP解析目录路径的3个函数总结
Nov 18 #PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 #PHP
You might like
php 调用远程url的六种方法小结
2009/11/02 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
js性能优化技巧
2015/11/29 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
python关键字and和or用法实例
2015/05/28 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
python3调用R的示例代码
2018/02/23 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
大四本科生的自我评价
2013/12/30 职场文书
测试工程师职业规划书
2014/02/06 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
节约用水的口号
2014/06/20 职场文书
仓管员岗位职责
2015/02/03 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android