什么是单例模式?
Posted 穿个格子衫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是单例模式?相关的知识,希望对你有一定的参考价值。
<?php
//如何实现单例模式,类只能实例化一次以随机数示例:mt_rand(1,10000)
class abx{
function __construct(){
var_dump (mt_rand(1,10000));//创造随机数
}
}
new abx();
new abx();
new abx();
?>
2.如果把构造函数变成受保护的,这样调用的时候就不能外部访问了,但是这样还是可以多次调用,虽然只转让了控制,代码如下:
<?php
//如何实现单例模式,类只能实例化一次以随机数示例:mt_rand(1,10000)
class abx{
protected function __construct(){
var_dump (mt_rand(1,10000));//创造随机数
}
static function axdc(){
return (new abx);
}
}
abx::axdc();
abx::axdc();
?>
3.如果加一个变量来判断它是否调用,如果调用不为空,就返回已经调用的值,这样不就可以控制了。
<?php
//如何实现单例模式,类只能实例化一次以随机数示例:mt_rand(1,10000)
class abx{
public static $a = null;
protected function __construct(){
echo (abx::$a = (mt_rand(1,10000)));//创造随机数
}
static function axdc(){
if((abx::$a)===null) {
return (new abx);
}
echo(abx::$a);
}
}
abx::axdc();
echo"____________";
abx::axdc();
?>
<?php
//如何实现单例模式,类只能实例化一次以随机数示例:mt_rand(1,10000)
class abx{
public static $a = null;
protected function __construct(){
echo (abx::$a = (mt_rand(1,10000)));//创造随机数
}
static function axdc(){
if((abx::$a)===null) {
return (new abx);
}
echo(abx::$a);
}
}
class asx extends abx{
function __construct(){
echo (abx::$a = (mt_rand(1,10000)));//创造随机数
}
}
new asx();
echo "___";
new asx();
?>
<?php
//如何实现单例模式,类只能实例化一次以随机数示例:mt_rand(1,10000)
class abx{
static $a = null;
final protected function __construct(){
echo (abx::$a = (mt_rand(1,10000)));//创造随机数
}
final static function axdc(){
if((abx::$a)===null) {
return (new abx);
}
echo(abx::$a);
}
}
abx::axdc();
echo "_____";
abx::axdc();
?>
如上就是我研究单例模式的代码!
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
以上是关于什么是单例模式?的主要内容,如果未能解决你的问题,请参考以下文章