<?php /** * 1.4 单例模式 * 解决的问题: * 如何确保一个特殊类的实例是独一无二的 * ,也就是说这个实例是它所属类的唯一一 * 个实例对象,并且很容易的对它进行存取? * 解决的方案: * 保证一个类仅有一个实例,并提供一个访 * 问它的全局访问点。 * 该模式包含一种角色: * 1. 单例角色 * 优点: * 1. 始终保持唯一的一个实例。 * 2. 可对此唯一实例进行访问控制。 * 缺点: * 1. 虽然实例数量很少,但每次请求引用时 * 都要检查是否存在类的实例,所以仍然 * 存在一些开销。可以通过使用静态初始 * 化解决此问题。 * 2. 因为不能实例化,所以开发人员必须记 * 住某个类不能使用new关键字产生对象。 * * 使用场景: * 1. 当类只能有一个实例而且客户可以从一 * 个众所周知的访问点访问它时。 * 2. 当这个唯一实例应该是通过子类化可扩展 * 的,并且客户应该无需改代码就能使用一 * 个扩展的实例时。 */ /** * 单例角色,三要素: * 1. 必须有一个静态成员变量保存实例; * 2. 只提供私有的构造函数; * 3. 必须有一个静态函数用于创建获取 * 静态成员变量。 * 4. 私有化克隆函数 */ class DB{ private $con; protected static $db; private function __construct(){ $this->con=new mysqli('localhost','root','123456','test'); echo '建立一次数据库连接'; } public static function getInstance(){ if(! self::$db instanceof self){ self::$db=new self(); } return self::$db; } private function __clone(){} } //客户端 $db=DB::getInstance(); $db2=DB::getInstance(); // $db3=clone $db; echo $db===$db2 ? 'OK':'NO'; ?>
设计模式之创建型模式—— 1.4 单例模式
原创great_yonchin 博主文章分类:设计模式 ©著作权
©著作权归作者所有:来自51CTO博客作者great_yonchin的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
设计模式之创建型模式-单例模式
1 ) 定义单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证某个类
单例模式 设计模式 java 序列化 构造方法 -
创建型模式:单例模式
易懂的单例模式
设计模式 单例模式 -
【五】设计模式~~~创建型模式~~~单例模式(Java)
设计模式~~~创建型模式~~~单例模式(Java)
java 单例模式 设计模式 单例类 实例化 -
【Java设计模式 - 创建型模式1】单例模式
java设计模式之单例模式简介场景实现单例模式的几种实现方式懒汉式,线程不安全懒汉式,线程安全饿汉式双检锁/双重校验锁(DCL,
单例模式 java 开发语言 初始化 User -
23种设计模式----单例模式----创建型模式
单例模式1.单例模式2.单例模式实现方式3.构思对比项目3.1对比方式3.2单例基类设计3.3线程基类3.4测试类基类设计4
设计模式 单例模式 8种实现 23种设计模式 创建型模式 -
创建型模式(二):单例模式
介绍:单例模式是一种创建型模式。它保证一个类仅有一个实例,并提供一个访问它的全局访问点。类图:单例模式UML类图.pngSingleto
java 设计模式 多线程 面试 线程安全