确保一个类只有一个实例,并提供一个全局访问点来访问它。

单件模式有三个特点:

1。类只有一个实例

2,它必须自己创建这个实例。

3,该示例必须提供给整个系统本身。

一、单例模式结构图


两。单例模式中的主要角色

单例定义了一个允许客户访问其惟一实例的实例操作。实例是一个类方法。

三。单一案例模型的优点

1。对唯一实例的受控访问

2。缩小命名空间单模式是对全局变量的一种改进,它避免了存储唯一实例的全局变量污染命名空间。

三.允许操作和表示的精英单例类可以有子类,并且很容易用这个扩展类的实例来配置应用程序。

4。允许变量数量的实例(多个示例)

5。比类操作更灵活

四。单模式应用场景

1。当一个类只有一个实例时,客户可以从一个众所周知的访问点访问它。

2,当这个唯一实例应该包含可扩展,用户应该能够使用一个扩展的实例不改变代码。

五,单例模式和其他模式}

工厂方法模式(工厂方法模式):单模式使用工厂模式提供它自己的实例。

抽象工厂模式(抽象工厂模式):抽象工厂模式可以作为单例模式使用,特定的工厂类被设计为单一类。

生成器模式(生成器模式):可以将构建模式设计为具体的构建类的单个模型。

五,单例php示例




< PHP

*懒鬼型单
* /
类单{


*静态完成变量保存全局实例
* /
私有静态_instance美元= null;


*私有化的默认施工方法,以确保外部世界不能直接实例化
* /
私有函数__construct(){
}


*静态工厂方法来返回此类的惟一实例
* /
公共静态函数getInstance(){
如果(is_null(自::$ _instance)){
自::_instance美元=新单();
}

回归自我::_instance美元;
}


*防止用户克隆实例
* /
公共功能__clone(){
('clone死是不允许的。。e_user_error);
}


*测试方法
* /
公共功能测试(){
echo'singleton测试!;
}

}


*客户端
* /
客户端类{


*主程序。
* /
公共静态函数main(){
例如:独生子女:美元= getInstance();
$实例>测试();
}
}

客户::主();
>


以上是使用php实现的单模式代码,和一些单模式的概念区别,希望能对你有所帮助。