***单例模式


单例模式实现:
1.拥有一个私有构造器;
2.提供一个自身静态私有的成员变量;
3.提供一个公有的静态公有的方法。


懒加载(懒汉式) 单例模式

package com.neusoft.test5;

// 懒加载(懒汉式) 单例模式  
public class SingletonA {
    static SingletonA a=null;
//单例模式 
//  1 .可以创建多个对象,因为可以 new 类名()----》将构造方法私有化private
    private SingletonA() {
    }
//  2. 当构造器私有化后,一个对象都不能创建
//     类的外部不能调用 构造器--------》在类的内部写一个public static
//                                   方法,返回创建的对象
    public static SingletonA getInstance() {
//      3.又创建多个对象了,----》getInstance 加上判断逻辑
        if(a==null) {
            a=new SingletonA();
        }else {
        }
        return a;
    }
    
}

积极加载式 (饿汉式) 单例模式

package com.neusoft.test5;

//积极加载式  (饿汉式)  单例模式  
public class SingletonB {
//  3.创建对象时机在 static属性中 -----》在类初始化时,执行一次
    static SingletonB a=new SingletonB();
//单例模式 
//  1 .可以创建多个对象,因为可以 new 类名()----》将构造方法私有化private
    private SingletonB() {
    }
//  2. 当构造器私有化后,一个对象都不能创建
//     类的外部不能调用 构造器--------》在类的内部写一个public static
//                                   方法,返回创建的对象
    public static SingletonB getInstance() {
        
        return a;
    }
    
}

创建对象

package com.neusoft.test5;

public class Test1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        SingletonA sa1=SingletonA.getInstance();
        SingletonA sa2=SingletonA.getInstance();
        System.out.println(sa1);
        System.out.println(sa2);
    }

}
//此时输出的sa1和sa2的内存地址一致.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容