最近面试老是被提及到,所以特地准备两一下资料,写下这篇
因为感觉技术不是很扎实,所以只能浅谈。
概念
单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。
特性
三私一公
- 私有静态属性,又来储存生成的唯一对象
- 私有构造函数
- 私有克隆函数,防止克隆——clone
- 公共静态方法,用来访问静态属性储存的对象,如果没有对象,则生成此单例
instanceof
检查此变量是否为该类的对象、子类、或是实现接口
- 一个private的__construct是必须的,单例类不能在其它类中实例化,只能被自身实例化;
- 拥有一个保存类的实例的静态成员变量;
- 一个静态的公共方法用于实例化这个类,并访问这个类的实例;
代码实现
1 | class SingleInstance{ |
应用场景
- 数据库的连接
- 网站的计数器
- 配置文件的读取
- 应用程序的日志应用,一般都何用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
优点
- 减少频繁创建,节省了cpu。
- 静态对象公用,节省了内存。
- 功能解耦,代码已维护。