php简单实现单态设计模式的方法分析


Posted in PHP onJuly 28, 2017

本文实例讲述了php简单实现单态设计模式的方法。分享给大家供大家参考,具体如下:

单态设计模式通常包含以下三点:

· 一个私有的 构造方法;(确保用户无法通过创建对象对其进行实例化)
· 一个公有的 静态的 方法;(负责对其本身进行实例化)
· 一个私有的 静态的 属性;(用于保存仅有的一个实例化对象)

<?php
class singleTon{
    //用于保存仅有的一个实例化对象
    private static $Instance=NULL;
    //构造方法 使用private 封装后 则只能在类的内部使用new去创建对象
    private function __construct(){};
    //只有通过这个方法才能返回本类中的对象,该方法是静态方法 用类名调用
    public static getInstance(){
       if(self::$Instance instanceof self){ //如果本类中的$Instance为空,说明还没有被实例化过
         self::$Instance=new singleTon(); //实例化本对象
       }
       return self::$Instance;
    }
}
$instance=singleTon::getInstance(); //只能使用静态方法getInstance()去获取singleTon类的对象
?>

所谓的单态设计模式就是一个类只能产生/创建唯一一个对象

要编写单态设计模式,就必须让一个类只能实例化一个对象,而要想让一个类只能实例化一个对象,就要先让一个类不能实例化对象

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个更简单的无限级分类菜单代码
Jan 16 PHP
PHP音乐采集(部分代码)
Feb 14 PHP
PHP排序算法的复习和总结
Feb 15 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
php中require和require_once的区别说明
Feb 27 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
Yii针对添加行的增删改查操作示例
Oct 18 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
Yii 2.0自带的验证码使用经验分享
Jun 19 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 #PHP
使用php自动备份数据库表的实现方法
Jul 28 #PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 #PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 #PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 #PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 #PHP
PHP实现的Redis多库选择功能单例类
Jul 27 #PHP
You might like
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
用PHP和ACCESS写聊天室(七)
2006/10/09 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
javascript自执行函数
2017/02/10 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
js数组的基本使用总结
2021/01/18 Javascript
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
dpn网络的pytorch实现方式
2020/01/14 Python
python中rc1什么意思
2020/06/19 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
Python实现壁纸下载与轮换
2020/10/19 Python
详解rem 适配布局
2018/10/31 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
2015出纳试用期工作总结
2014/12/12 职场文书
总经理检讨书范文
2015/02/16 职场文书
三行辞职书范文
2015/02/26 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书