设计模式_单例模式
来源:互联网 发布:大数据 精准医疗 ppt 编辑:程序博客网 时间:2024/05/21 19:42
只包含一个被称为单例类的特殊类。通过单例模式保证系统中,某个类的对象只存在一个。
优点:
1 提供对唯一实例的受控访问。
2 节省内存,系统内存中只存在一个该类的实例。
3 防止产生逻辑错误,比如产生序列号,两个实例可能会产生两个相同序列号。
4 允许可变个数的实例。
缺点:
1 时间开销:每次请求引用检查是否存在类的实例,仍需要时间开销,通过静态初始化解决。
2 开发混淆:开发人员需要记住使单例类不能通过new关键字创建。
3 生存周期:基于内存管理的语言(如Java,.Net),只有单例类能够导致实例被取消分配,因为它包含该实例的私有引用;可手动释放内存的语言(如C++),可以删除对象实例,易出现悬浮引用。
4不易扩展:单例模式没有抽象层,不易扩展。
5负面问题:节省资源,将数据库连接池对象设置为单例类,导致共享连接池对象的程序过多造成连接池溢出。
6对象丢失:实例化的对象长时间不被利用,在基于内存管理的语言中,会被系统回收,从而导致对象状态丢失。
实现:
1 私有,静态,成员变量。
2 私有的构造方法;使实例不能通过new关键字创建。
3 私有的克隆方法;使实例不能被复制或者克隆。
4 静态初始化,getInstance()方法为静态;减少时间开销。
PHP实例
class Singleton{private static $_instance = null;//私有静态变量private function __construct(){//私有构造方法,外部不能通过new获得类的实例//..}private function __clone(){}//私有克隆方法,不能被复制或者克隆public static function getInstance(){//静态方法获取实例,减少时间消耗if(!(self::$_instance instanceof self)){self::$_instance = new Singleton();}return self::$_instance;}}
1418131414
From ArcticFox
0 0
- 设计模式_单例设计模式
- 设计模式_单例
- 设计模式_单例模式
- 设计模式之_单例模式
- Java设计模式_单例模式
- 大话设计模式_单例模式
- 设计模式_单例模式
- 设计模式05_单例模式
- 设计模式01_单例模式
- 设计模式_单例模式
- 设计模式_单例模式
- C#设计模式_单例模式
- 设计模式_单例模式
- 设计模式_单例模式
- 【GOF23设计模式】_单例模式
- 设计模式_单例模式
- 设计模式01_单例模式
- java设计模式_单例模式
- android共享首选项 sharedpreferences(6)
- 2014下半年广西教师资格面试课程12月13日开班!
- try块和异常处理
- 【.NET】NuGet发布类库包,轻松管理dll文件
- bootstrap插件bootbox参数和自定义弹出框宽度设置
- 设计模式_单例模式
- 初窥Foundation框架
- iOS 归档
- 项目面试
- 函数
- 函数声明
- 第15周矩阵对角线之和
- uva 11137(硬币dp)
- IO标准库类型