担保一个类仅有一个实例,并且供应一个访问它的全局访问点【GOF95】
单例模式有三个特点:
1、一个类只有一个实例

2、它必须自行创建这个实例
3、必须自行向全体系统供应这个实例
【单例模式构造图】
单例模式
【单例模式中紧张角色】
Singleton 定义一个Instance操作,许可客户访问它的唯一实例。Instance是一个类方法。卖力创建它的唯一的实例。
【单例模式的优点】
1、对唯一实例的受控访问
2、缩小命名空间 单例模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染命名空间
3、许可对操作和表示的精华 单例类可以有子类。而且用这个扩展类的实例来配置一个运用是很随意马虎的。你可以用你所须要的类的实例在运行时候配置运用。
4、许可可变数目的实例(多例模式)
5、比类操作更灵巧
【单例模式适用场景】
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
2、当这个唯一实例该当是通过子类化可扩展的。并且用户该当无需变动代码就能利用一个扩展的实例时。
【单例模式与其它模式】
工厂方法模式(factory method模式):单例模式利用工厂模式来供应自己的实例。
抽象工厂模式(abstract factory模式):抽象工厂模式可以利用单例模式,将详细工厂类设计成单例类。
建造者模式(Builder模式):建造模式可以将详细建造类设计成单例模式。
……
【单例模式PHP示例】
PHP中不支持饿汉式的单例模式 由于PHP不支持在类定义时给类的成员变量授予非基本类型的值。如表达式,new操作等等 转自:http://www.phppan.com/2010/06/php-design-pattern-6-singleton/<?php/ 单例模式 2010-06-06 sz @author phppan.p#gmail.com http://www.phppan.com 哥学社成员(http://www.blog-brother.com/) @package design pattern//