php单例模式代码,php设计模式之单例模式代码
/**
* php设计模式 单例模式
*/
class Fruit{
private static $instanceMap = array();
//protected getter for singleton instances
protected static function getSingleton($className){
//保证单例模式 并且不能从控制器实例化和克隆
if (!isset(self::$instanceMap[$className])) {
$object = new $className;
//Make sure this object inherit from Singleton
if ($object instanceof Fruit) {
self::$instanceMap[$className] = $object;
var_dump($object);
} else {
throw SingletonException("Class '$className' do not inherit from Singleton!");
}
}
return self::$instanceMap[$className];
}
//protected constructor to prevent outside instantiation
protected function __construct(){}
//denie cloning of singleton objects
public final function __clone(){
trigger_error('It is impossible to clone singleton', E_USER_ERROR);
}
}
class Apple extends Fruit{
protected $rndId;
public function __construct(){
$this->rndId = rand();
}
public function whatAmI(){
echo 'I am a Apple(' . $this->rndId . ')
';
}
public static function getInstance(){
//echo get_class();
return Fruit::getSingleton(get_class());
}
}
class GreenApple extends Apple{
public function whatAmI(){
echo 'I am a GreenApple(' . $this->rndId . ')
';
}
public static function getInstance(){
return Fruit::getSingleton(get_class());
}
}
$apple1 = Apple::getInstance();
//var_dump($apple1);
$apple2 = GreenApple::getInstance();
$apple1->whatAmI();// should echo 'I am a Apple(some number)
$apple2->whatAmI();// should echo 'I am a GreenApple(some number)
$apple1 = Apple::getInstance();
$apple2 = GreenApple::getInstance();
//保证单例模式
$apple1->whatAmI();// should echo 'I am a Apple(same number as above)
$apple2->whatAmI();// should echo 'I am a GreenApple(same number as above)
// $a = clone $apple1;// this should fail
// $b = clone $apple2;// this should fail
php单例模式代码,php设计模式之单例模式代码相关推荐
- java单例模式实例_Java设计模式之单例模式 通俗易懂 超详细 【内含案例】
单例模式 什么是单例模式 ? 确保程序中一个类只能被实例化一次,实现这种功能就叫单例模式 单例模式的好处是什么 ? 方便控制对象 节省资源减少浪费 怎么实现单例模式 ? 构造私有化 调用静态方法返回实 ...
- php 单例模式 序列化,php设计模式(二)单例模式
应用场景: 数据库连接这种比较耗费资源的操作: 我们希望整个应用只实例化一个: 结构: 4私1公: 私有化构造方法: 防止使用 new 创建多个实例: 私有化克隆方法: 防止 clone 多个实例: ...
- 代码规范+设计模式落地之路
欢迎关注方志朋的博客,回复"666"获面试宝典 | 前言 刚刚与同事开了一个分享会,笔者分享了一些了代码设计模式相关的内容. 以及复盘了一下项目中有些复杂的业务场景,为什么没有很好 ...
- socket可以写成单例嘛_精读《设计模式 - Singleton 单例模式》
Singleton(单例模式) Singleton(单例模式)属于创建型模式,提供一种对象获取方式,保证在一定范围内是唯一的. 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 其实单例模 ...
- 设计模式(一) 单例模式
2019独角兽企业重金招聘Python工程师标准>>> Hello 设计学习应用,好记性不如烂笔头,强调不是学习和小试牛刀,通过几遍文章资料,通过几段固定的代码就可以把设计模式的思想 ...
- iOS设计模式(02):单例模式
分享到:QQ空间新浪微博腾讯微博微信 单例模式是一个类在系统中只有一个实例对象.通过全局的一个入口点对这个实例对象进行访问.在iOS开发中,单例模式是非常有用的一种设计模式.如下图,是一个简单的例模式 ...
- java23种设计模式+单例_Java23种设计模式之单例模式
一.单例模式简介 单例模式是Java设计模式中常见的一种模式.主要分为懒汉式单例.饿汉式单例.登记式单例: 单例模式的特点: 1.单例类只能有一个实例: 2.单例类必须自己创建自己的唯一的实例: ...
- C#设计模式(1)——单例模式
原文地址:http://www.cnblogs.com/zhili/p/SingletonPatterm.html 一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设 ...
- java设计模式之单例模式(七种方法)
单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...
最新文章
- NIO详解(七):进程间通信(MappedByteBuffer)
- Rails测试《十一》添加邮件发送程序及测试邮件发送程序
- win7安装matlab的问题,安装matlab7.0出现问题,我是win7+64位系统,求解
- 2.7万字还原行业面貌,《2019 AI金融风控行业研究报告》正式上线!...
- [js] js中的undefined和 ReferenceError: xxx is not defined 有什么区别?
- 初窥Linux 之 我最常用的20条命令
- python爬虫课程设计摘要_爬虫课程设计(爬虫代码)
- 您的设备不支持googleplay服务_google play下载-google play下载安卓
- 对方差,协方差,相关系数,协方差矩阵的理解与比较
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_1_两种获取Stream流的方式...
- 四纵四横客运专线(高铁)
- 软件开发人员培养计划
- php apache mpm,RHEL 7 Apache MPM 配置
- java pointer_Java EE 8 JSON Pointer讲解
- 因为有太多的无奈,我选择了逞强
- Excel Sheet页相关操作(21.10现代设计体验)
- 红旗linux如何开远程桌面,红旗Linux开启_ftp_telnet_远程桌面
- 华人新移民在美国哪里定居最适合?第一名居然是....
- 点燃你温暖我 爱心 源码
- 使用VGG-19模型训练自己的数据集