单例模式(饿汉式),代码如下:
package com.learn;
/**
* 单例模式
*/
public class Person {
/**
* 饿汉式
*/
// 1、私有化构造方法
private Person(){
}
// 2、私有化静态属性
private static Person person = new Person();
// 3、获取实例的方法
public static Person getInstance(){
return person;
}
}
单例模式(懒汉式),代码如下:
package com.learn;
/**
* 单例模式
* 懒汉式(静态内部类方法实现),可以避免线程安全问题
*/
public class Person {
// 1、私有化构造方法
private Person(){
}
// 2、私有化静态属性
private static class PersonInstance {
private final static Person PERSON = new Person();
}
// 3、获取实例的方法
public static Person getInstance() {
return PersonInstance.PERSON;
}
}
调用代码如下:
package com.learn;
/**
* 输出地址一样,证明用的是同一个实例
*/
public class TestPerson {
public static void main(String[] args) {
Person person1 = Person.getInstance();
Person person2 = Person.getInstance();
System.out.println(person1); // com.learn.Person@119d7047
System.out.println(person2); // com.learn.Person@119d7047
System.out.println(person1 == person2); // true
}
}
ps:如有不足,期待您的指点,谢谢!