//一开始就造好(饿汉式)
//什么时候用什么时候造(懒汉式)
//创建一个单例(饿汉式)
public class SingleObject {
//注意static,因为要在main中调用,main是static的
//创建 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 {
//注意static,因为要在main中调用,main是static的
//创建 SingleObject 的一个对象
private static SingleObject instance;
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
if(instance == null){
instamce = new Order();
}
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
//创建一个单例(线程安全的懒汉式)
public class SingleObject {
//注意static,因为要在main中调用,main是static的
//创建 SingleObject 的一个对象
private static SingleObject instance;
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
//此判断是为了让效率更高
if(instance == null){
sychronized(Bank.class){
if(instance == null){
instamce = new Order();
}
}
}
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
//调用一个单例
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject();
//获取唯一可用的对象
SingleObject object = SingleObject.getInstance();
//显示消息
object.showMessage();
}
}
//懒汉式和饿汉式的区别
//饿汉式:坏处,加载时间过长
// 好处,线城安全
//懒汉式:坏处,线程不安全-->多线程时修改
// 好处,延迟对象的创建