第 3 章 单例模式
来源:互联网 发布:我们应该禁止网络用语 编辑:程序博客网 时间:2024/06/11 07:58
<?php
header("Content-type: text/html; charset=UTF-8");
/**
* 单例模式
* 这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,
* 单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?
* 我们举个比较难复制的对象:皇帝
* 中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这
* 个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过
* 渡期的不考虑,别找茬哦),大臣磕完头,抬头一看,嗨,还是昨天那个皇帝,单例模式,绝对的单例模式,
*
*/
// 然后我们看程序实现,先定一个皇帝:
/**
* 中国的历史上一般都是一个朝代一个皇帝,有两个皇帝的话,必然要PK出一个皇帝出来
*/
class Emperor {
private static $emperor = null; //定义一个皇帝放在那里,然后给这个皇帝名字
private function __construct(){
//世俗和道德约束你,目的就是不让你产生第二个皇帝
}
public static function getInstance(){
if(self::$emperor == null){ //如果皇帝还没有定义,那就定一个
self::$emperor = new self();
}
return self::$emperor;
}
//皇帝叫什么名字呀
public function emperorInfo(){
echo ("我就是皇帝某某某....<br><br><br><br>");
}
}
// 然后定义大臣:
/**
* 大臣是天天要面见皇帝,今天见的皇帝和昨天的,前天不一样那就出问题了!
*/
class Minister {
public function __construct() {
//第一天
$emperor1 = Emperor::getInstance();
$emperor1->emperorInfo(); //第一天见的皇帝叫什么名字呢?
//第二天
$emperor2 = Emperor::getInstance();
$emperor2->emperorInfo();
//第三天
$emperor3 = Emperor::getInstance();
$emperor3->emperorInfo();
//三天见的皇帝都是同一个人,荣幸吧!
}
}
new Minister();
header("Content-type: text/html; charset=UTF-8");
/**
* 单例模式
* 这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,
* 单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?
* 我们举个比较难复制的对象:皇帝
* 中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这
* 个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过
* 渡期的不考虑,别找茬哦),大臣磕完头,抬头一看,嗨,还是昨天那个皇帝,单例模式,绝对的单例模式,
*
*/
// 然后我们看程序实现,先定一个皇帝:
/**
* 中国的历史上一般都是一个朝代一个皇帝,有两个皇帝的话,必然要PK出一个皇帝出来
*/
class Emperor {
private static $emperor = null; //定义一个皇帝放在那里,然后给这个皇帝名字
private function __construct(){
//世俗和道德约束你,目的就是不让你产生第二个皇帝
}
public static function getInstance(){
if(self::$emperor == null){ //如果皇帝还没有定义,那就定一个
self::$emperor = new self();
}
return self::$emperor;
}
//皇帝叫什么名字呀
public function emperorInfo(){
echo ("我就是皇帝某某某....<br><br><br><br>");
}
}
// 然后定义大臣:
/**
* 大臣是天天要面见皇帝,今天见的皇帝和昨天的,前天不一样那就出问题了!
*/
class Minister {
public function __construct() {
//第一天
$emperor1 = Emperor::getInstance();
$emperor1->emperorInfo(); //第一天见的皇帝叫什么名字呢?
//第二天
$emperor2 = Emperor::getInstance();
$emperor2->emperorInfo();
//第三天
$emperor3 = Emperor::getInstance();
$emperor3->emperorInfo();
//三天见的皇帝都是同一个人,荣幸吧!
}
}
new Minister();
运行结果:
我就是皇帝某某某....
我就是皇帝某某某....
我就是皇帝某某某....
0 0
- 第 3 章 单例模式
- 第 3 章 单例模式【Singleton Pattern】
- 第2章 单例模式
- 第7章 单例模式
- 第7章 单例模式进阶
- 单例模式(第21章)
- 第8章 创建型模式---单例模式
- 《HeadFirst设计模式》读书笔记-第5章-单例模式
- 大话设计模式 第21章 单例模式
- 第6章 单例模式与多线程
- 第6章 单例模式与多线程
- 第11天 单例模式
- 第1篇 单例模式
- 设计模式-第1讲-单例
- 大话设计模式C++实现-第21章-单例模式
- 《Android源码设计模式》读书笔记 (1) 第1章 单例模式
- 大话设计模式--第21章 有些类也需要计划生育--单例模式
- 设计模式 第4篇 单例模式 Singleton
- 解决ubuntu 64bit AndroidStudio中的SDK无法使用的问题
- redis缓存的安装和使用
- 云计算,移动云计算,虚拟化技术概念以及相关技术注解
- java.io.FileNotFoundException: /home/hadoop/hadoop/dfs/namenode/current/VERSION (Permission denied)
- 【一图解读】甜粽子VS咸粽子 你吃哪个?
- 第 3 章 单例模式
- Spring + Struts + Hibernate联合开发(多对一关系)
- day82(断言)
- SSH框架联合开发(Annotation精简Spring的配置文件)
- perl智能匹配
- 第 4 章 多例模式
- Tomcat7和mysql连接池的配置方法和测试
- OCP 1Z0 051 QUESTION NO: 16
- object-c开发命名规则