一,模式分类
目的
1,创建型 Creational模式 负责对象创建
2,结构型 Structural模式 处理类与对象间的组合
3,行为型 Behavior 模式 类与对象交互中的职责分配
范围来看
1,类模式处理类与子类的静态关系
2,对象模式处理对象间的动态关系
二,Singleton模式
1,动机Motivation
在软件系统中 有一些特殊类,必须保证他们在系统中只有一个存在(只有一个实例)才能保证他们的逻辑正确性,以及良好的效率
这种动机是类的设计者的责任(由设计类的人保证),而不是使用者的责任
如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例
2,意图
保证一类只有一个实例,并提供一全局访问点
三,Singleton模式的几个要点
1,Singleton模式中的实例构造器可以设置为protected以允许子类派生
2,Singleton模式不需要支持Icloneable接口(该接口用于克隆),会导致多个对象实例
3,一般不要支持序列化,同上(序列化的方式也可以创建对象)
4,只考虑了对象创建管理,没有考虑对象销毁的管理。因为开销较小(仅有一个),所以没有必要对其销毁进行特殊的管理。
5,不能应用多线程环境,在多线程环境中,使用Singleton模式任然有可能得到多个实例对象。
四,Singleton模式的扩展
1,将一个实例扩展到n个实例,例如对象池的实现
n并不是任意,而是可控制的范围,
如,建立一个服务队列,在初始化的过程中用new构造出n个对象,再轮询调用
2,将new构造器的调用转移到其他类中,例如多个类协同工作环境中,某个局部环境只需要拥有一个类的一个实例
3,理解和扩展Singleton模式的核心是:“如何控制用户使用new对一个类的实例构造器的任意调用”
即使很好的控制new,new太自由
五,实例
1,单线程Singleton模式
2,多线程Singleton模式
3,更好的Singleton模式的实现(多线程对应)
4,其他实例
本文深入探讨了单例模式的设计理念,包括其基本概念、不同场景下的实现方式,以及在多线程环境中的应用技巧。此外,还介绍了单例模式的优缺点,并提供了几个实用的示例。

722

被折叠的 条评论
为什么被折叠?



