保证一个类仅有一个实例,并提供访问它的全局访问点。
可以避免一个全局使用的类频繁的创建与销毁。
判断实例是否存在如果存在直接返回,不存在就创建。
私有构造函数,创建实例,获取实例方法接口。
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
//懒汉式
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance;
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
if(instance == null){
instance = new Singleobject();
}
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
//懒汉线程安全
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject();
//获取唯一可用的对象
SingleObject object = SingleObject.getInstance();
//显示消息
object.showMessage();
}
}
其他实现方式: