单例模式实现:
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的内存地址一致.