什么是单例设计模式, 顾名思义: 单例设计模式就是确保一个类里只有一个实例的设计模式, 这也是这个设计模式的优点, 这个类里只会有一个实例.
它的步骤:
1 > 我们开发一个类, 构造方法私有化, 保证不能在程序中随意 new 对象
2 > 在类里定义一个静态变量, 实例化一个该类的实例 (外界在调方法时, 只能得到一个实例, 是一个单例的类)
两种形式:
1. 饿汉式单例类
- public class Cat{
- //static 属性保证了只持有一个 Cat 实例, 每次调用静态方法, 都返回同一个 Cat 实例的引用
- private static Cat cat = new Cat();
- // 私有化构造方法
- private Cat(){
- } // 提供静态的返回 Cat 实例的方法
- public static Cat getInstance(){
- return cat;
- }
- }
2. 懒汉式单例 (什么时候调用静态方法获取实例, 什么时候在创建对象)
- public class Cat{
- // static 属性: 只存一份
- private static Cat cat;
- // 私有化构造方法
- private Cat() {
- }
- // 提供静态的返回 Cat 实例的方法
- public static Cat getInstance() {
- if (cat == null) {
- synchronized (Cat.class) {
- if (cat == null) {
- cat = new Cat();
- }
- }
- }
- return cat;
- }
- }
注: 懒汉式单例在多线程环境下不安全, 要加同步锁 synchronized, 然后在同步代码块中加一层判断, 双重判定锁 j 就可以啦.
来源: http://www.bubuko.com/infodetail-2971337.html