确保一个类只有一个实例,并提供一个全局访问点来访问它。
单件
模式有三个特点:
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实现的单模式代码,和一些单模式的概念
区别,希望能对你有所帮助。