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 相关文章推荐
一个用于MySQL的PHP XML类
Oct 09 PHP
php session和cookie使用说明
Apr 07 PHP
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
curl和libcurl的区别简介
Jul 01 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
php实现留言板功能(会话控制)
May 23 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
php strftime函数获取日期时间(switch用法)
May 16 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
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
Python程序设计入门(4)模块和包
2014/06/16 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
J2EE系统只能是基于web
2015/09/08 面试题
小学校本教研总结
2015/08/13 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA