<?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();
运行结果:
我就是皇帝某某某....
我就是皇帝某某某....
我就是皇帝某某某....