php单例模式实现对象只被创建一次 mysql单例操作类

这是我在php面试题中遇到的一道试题,单例模式按字面来看就是某一个类只有一个实例,这样做的好处还是很大的,比如说数据库的连接,我们只需要实例化一次,不需要每次都去new了,这样极大的降低了资源的耗费。

单例类至少拥有以下三种公共元素:

必须拥有一个构造函数,并且必须被标记为private。
拥有一个保存类的实例的静态成员变量。
拥有一个访问这个实例的公共的静态方法

具体使用方面,在下面php实例中注释的很清楚:

 1 <?php
 2     /**
 3      * by www.phpddt.com
 4      */
 5     class Mysql{
 6         //该属性用来保存实例
 7         private static $conn;
 8         //构造函数为private,防止创建对象
 9         private function __construct(){
10             $this->conn = mysql_connect(‘localhost‘,‘root‘,‘‘);
11         }
12         //创建一个用来实例化对象的方法
13         public static function getInstance(){
14             if(!(self::$conn instanceof self)){
15                 self::$conn = new self;
16             }
17             return self::$conn;
18         }
19         //防止对象被复制
20         public function __clone(){
21             trigger_error(‘Clone is not allowed !‘);
22         }
23
24     }
25     //只能这样取得实例,不能new 和 clone
26     $mysql = Mysql::getInstance();
27 ?>
时间: 2024-11-05 17:32:23

php单例模式实现对象只被创建一次 mysql单例操作类的相关文章

创建单例实体类

package xiancheng;/** * 单例创建的方式 * 1.懒汉式 * 2.饿汉式 * 3.利用内部类的方式 * @author User * */ public class lianxi18 {}/** * 加入内部类的形式 类在使用的形式才加载 延缓加载时间 * @author User * */class demo03 { private static class jvmholder{ public static demo03 instance=new demo03(); }

单例创建及宏实现单例

创建一个类Tool 继承于NSobject 这里用了两种方式创建单例,注释部分代码比较繁琐,非注释部分为GCD,本人感觉看起来比较干净. 如果是在 非ARC状态下运行 需要自定义release,retain,retainCount,防止单例运用时能释放 在.h里添加该类方法 因为一个程序或者一个项目在应用单例时,频率比较高,所以需要大量的创建单例类,然后重复上面的创建,导致代码内容重复,质量不高,因此,我们可以将单例进行宏实现,这样以后再次创建单例时,.h文件里和.m文件里都只需一行代码解决问题

创建型设计模式之单例设计模式

概念解释:确保一个类只有一个实例,并提供一个全局访问点. 应用场景1.多线程的线程池,方便控制及节约资源.2.windows电脑的任务管理器就是,不信你试试.3.windows电脑的回收站也是.4.数据库的连接池设计,一般也采用单例设计模式,数据库连接是一种数据库资源.在数据库软件系统中使用数据库连接池,可以节省打开或关闭数据库连接引起的效率损耗,用单例模式维护,就可以大大降低这种损耗.5.应用程序的日志应用,由于共享的日志文件一直处于打开状态,只能有一个实例去操作,否则内容不好追加. 为了便于

设计模式 - 单例模式mysql数据库操作类

待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php'; $db = MySQLDB::getInstance('127.0.0.1:3306', 'root', '123456', 'test'); $db->insertData(); instance.php 单例操作类: <?php /** * 单例模式MySQL数据库操作类 */ clas

单例模式--独一无二的对象

1.单例模式的定义 单例模式(Singleton Pattern):用来创建独一无二的,只能有一个实例的对象的入场券. 在我们进行开发的时候,有些对象我们只需要一个,比如:配置文件,工具类,线程池.缓存.日志对象等.如果创造出多个实例,就会导致许多问题,比如占用资源过多,不一致的结果等.使用单例模式就能保证在程序中需要的实例只有一个. 单例模式的类型:懒汉模式.饿汉模式. 2.单例模式的类图 下面是单例模式的类图: 我们将创建一个单例对象类 - Singleton.单例对象(Singleton)

单例模式:dispatch_once创建单例

无论是爱还是恨,你都需要单例. 什么是单例呢?Wikipedia是如此定义的: 在软件工程中,单例是一种用于实现单例的数学概念,即将类的实例化限制成仅一个对象的设计模式. 或者我的理解是: 单例就是类,但是该类只能实例化出一个对象. 尽管这是单例的实际定义,但在Foundation框架中不一定是这样.比如NSFileManger和NSNotificationCenter,分别通过它们的类方法defaultManager和defaultCenter获取.尽管不是严格意义的单例,这些类方法返回一个可

Objective-C设计模式——单例Singleton(对象创建)

单例 和其它语言的单例产不多,可以说是最简单的一种设计模式了.但是有几个点需要注意下,单例就是一个类只有一个实例. 所以我们要想办法阻止该类产生别的实例,一般语言中都会将构造函数写为private.但是OC中的函数并没有限定符,所以我们需要用一些小技巧来屏蔽这一点. 应用场景 类只能有一个实例,而且必须从一个为人熟知的访问点对其进行访问,比如工厂方法. 这个唯一的实例只能通过类的子类化进行扩展,而且扩展的对象不会破坏客户端代码. 注意 1.OC中单例的实例变量要定义在.m文件 2.OC中单例需要

4创建型模式之单例模式__多线程下的懒汉式单例和饿汉式单例

//1"懒汉"模式虽然有优点,但是每次调用GetInstance()静态方法时,必须判断 //      NULL == m_instance,使程序相对开销增大. //2多线程中会导致多个实例的产生,从而导致运行代码不正确以及内存的泄露. //3提供释放资源的函数 讨论:   这是因为C++中构造函数并不是线程安全的. C++中的构造函数简单来说分两步: 第一步:内存分配 第二步:初始化成员变量 由于多线程的关系,可能当我们在分配内存好了以后,还没来得急初始化成员变量,就进行线程切换

单例对象

在开发中经常需要使用单例对象.今天主要说的是单例宏 首先先简单介绍一下 1.单例设计模式(Singleton) 1> 什么: 它可以保证某个类创建出来的对象永远只有1个 2> 作用(为什么要用) * 节省内存开销 * 如果有一些数据, 整个程序中都用得上, 只需要使用同一份资源(保证大家访问的数据是相同的,一致的) * 一般来说, 工具类设计为单例模式比较合适 3> 怎么实现 * MRC(非ARC) * ARC 代码采用的是mrc的环境 单独创建一个.h文件 例如SingleTon.h