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 相关文章推荐
关于PHP中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
PHP实现过滤各种HTML标签
May 17 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
php进行md5加密简单实例方法
Sep 19 PHP
php屏蔽错误及提示的方法
May 10 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
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
python3中函数参数的四种简单用法
2018/07/09 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
python实现电子词典
2020/03/03 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
六查六看心得体会
2014/10/14 职场文书
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers