单例模式(Singlton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类简称单例类。
单例模式实现的要点有三个:
- 某个类只能有一个实例
- 单例类必须自行创建这个实例
- 单例类必须自行向整个系统提供这个实例
- 单例模式需要拥有一个私有构造函数,去报用户无法通过new关键字直接实例化它
具体类图如下
表明单例类自己拥有自己为对象属性,具体实现流程为,客户调用getInstance()方法来获取一个对象,当第一次获取时则新建一个对象,如果不是第一次获取则返回已有的对象。
单例模式优点:
- 提供了唯一实例的受控访问
- 节约系统资源
- 允许可变数目的实例
缺点:
- 单例类职责过重,即充当工厂角色,又充当产品角色
- 滥用单例会带来一些负面影响
单例模式有两种类型分别为饿汉式单例类和懒汉式单例类:
饿汉式单例类是在类被加载是就实例一个对象,而懒汉式是在调用对象时再将其实例化
具体实现如下,
饿汉式:
懒汉式: