《PHP应用:学习php设计模式 php实现单例模式(singleton)》要点:
本文介绍了PHP应用:学习php设计模式 php实现单例模式(singleton),希望对您有用。如果有疑问,可以联系我们。
PHP编程保证一个类仅有一个实例,并且提供一个拜访它的全局拜访点.
单例模式有三个特点:
1、一个类只有一个实例
2、它必须自行创建这个实例
3、必须自行向整个系统提供这个实例
一、单例模式结构图
PHP编程
PHP编程二、单例模式中主要角色
Singleton 定义一个Instance操作,允许客户拜访它的唯一实例.Instance是一个类方法.负责创建它的唯一的实例.
三、单例模式的优点
1、对唯一实例的受控拜访
2、缩小命名空间 单例模式是对全局变量的一种改进.它避免了那些存储唯一实例的全局变量污染命名空间
3、允许对操作和表示的精华 单例类可以有子类.而且用这个扩展类的实例来配置一个应用是很容易的.你可以用你所需要的类的实例在运行时刻配置应用.
4、允许可变数目的实例(多例模式)
5、比类操作更灵活
四、单例模式适用场景
1、当类只能有一个实例而且客户可以从一个众所周知的拜访点拜访它时
2、当这个唯一实例应该是通过子类化可扩展的.并且用户应该无需更改代码就能使用一个扩展的实例时.
五、单例模式与其它模式】
工厂方法模式(factory method模式):单例模式使用工厂模式来提供自己的实例.
抽象工厂模式(abstract factory模式):抽象工厂模式可以使用单例模式,将具体工厂类设计成单例类.
建造者模式(Builder模式):建造模式可以将具体建造类设计成单例模式.
五、单例模式PHP示例
PHP编程
<?php
/**
* 懒汉式单例类
*/
class Singleton {
/**
* 静态成品变量 保存全局实例
*/
private static $_instance = NULL;
/**
* 私有化默认构造办法,保证外界无法直接实例化
*/
private function __construct() {
}
/**
* 静态工厂办法,返还此类的唯一实例
*/
public static function getInstance() {
if (is_null(self::$_instance)) {
self::$_instance = new Singleton();
}
return self::$_instance;
}
/**
* 防止用户克隆实例
*/
public function __clone(){
die('Clone is not allowed.' . E_USER_ERROR);
}
/**
* 测试用办法
*/
public function test() {
echo 'Singleton Test!';
}
}
/**
* 客户端
*/
class Client {
/**
* Main program.
*/
public static function main() {
$instance = Singleton::getInstance();
$instance->test();
}
}
Client::main();
?>
PHP编程以上就是使用php实现单例模式的代码,还有一些关于单例模式的概念区分,希望对大家的学习有所帮助.
欢迎参与《PHP应用:学习php设计模式 php实现单例模式(singleton)》讨论,分享您的想法,维易PHP学院为您提供专业教程。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/8303.html