24种设计模式介绍与6大设计原则(PHP版)之单例模式
时间:2011-09-01
来源:互联网
这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?
我们举个比较难复制的对象:皇帝
中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过渡期的不考虑,别找茬哦),大臣磕完头,抬头一看,嗨,还是昨天那个皇帝,单例模式,绝对的单例模式
复制代码
我们举个比较难复制的对象:皇帝
中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过渡期的不考虑,别找茬哦),大臣磕完头,抬头一看,嗨,还是昨天那个皇帝,单例模式,绝对的单例模式
- <?php
- /**
- * 单例模式
- * 中国的历史上一般都是一个朝代一个皇帝
- * 有两个皇帝的话,必然要PK出一个皇帝出来
- *
- */
- class Emperor {
- private static $emperor = null;//定义一个皇帝放在那里,然后给这个皇帝名字
-
- //将构造函数设置成 private ,让构造函数只能在内部被调用,而外部不能调用。
- //这样,这个类就不能被外部用 new 的方式建立多个实例了
- private function __construct(){}
-
- public static function getInstance()
- {
- if(self::$emperor == null){//如果皇帝还没有定义,那就定一个
- self::$emperor = new Emperor();
- var_dump('self::$emperor = new Emperor(); ');
- }
- return self::$emperor;
- }
-
- //皇帝叫什么名字呀
- public static function emperorInfo(){
- echo "我就是皇帝某某某...";
- }
- }
-
- /**
- * 大臣是天天要面见皇帝
- * 今天见的皇帝和昨天的、前天的不一样那就出问题了!
- *
- */
- class Minister
- {
- public static function doit() {
- //第一天
- $emperor1=Emperor::getInstance();
- $emperor1->emperorInfo();//第一天见的皇帝叫什么名字呢?
- //第二天
- $emperor2=Emperor::getInstance();
- Emperor::emperorInfo();
- //第三天
- $emperor3=Emperor::getInstance();
- $emperor2->emperorInfo();
-
- //三天见的皇帝都是同一个人,荣幸吧!
- }
- }
-
- $minister = new Minister();
- $minister->doit();
作者: 顺顺利利 发布时间: 2011-09-01
顶一个!
作者: 单骑闯天下 发布时间: 2011-09-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28