单例模式(Singleton)
采用方法,将一个类在一个软件中编程只存在唯一的一个实例对象,考虑到要求,可以将对象的构造私有化,在该类中提供该类创建对象的静态属性。
1.恶汉式
public class Single {
/**
* 将类的构造方法私有化
*/
private Single() {
System.out.println("对象创建了");
}
/**
* 在该类中提供创建该类的基本属性
*/
private static Single onlyone=new Single();
public static Single getSingle(){
return onlyone;
}
}
public class Test {
/**
* 学生类为普通类,通过地址值比较,得出两个学生
* 不是同一对象,两个单例模式对象地址值相等
* @param args
*/
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
System.out.println(student1==student2);
Single s1 = Single.getSingle(); //访问静态方法
Single s2 = Single.getSingle();
System.out.println(s1==s2);//两个对象的地址值一样
}
}
2.懒汉式
public class Singleton {
/**
* 将类的构造器私有化
*/
private Singleton(){}
/**
* 提供创建对象的属性
*/
private static Singleton singleton=null;
/**
* 创建对象的方法
*/
public static Singleton getSingleton(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
public class Test {
/**
* 学生类为普通类,通过地址值比较,得出两个学生
* 不是同一对象,两个单例模式对象地址值相等
* @param args
*/
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
System.out.println(student1==student2);
Singleton s1 = Singleton.getSingleton(); //访问静态方法
Singleton s2 = Singleton.getSingleton();
System.out.println(s1==s2);//两个对象的地址值一样
}
}