package cn.test.demo;
/**
* @author Administrator 单例模式 饿汉式
*/
private Singleton01() {
}
public static Singleton01 getInstance() {
return singleton01;
}
//测试调用
public void test() {
System.out.println("java");
}
/**
* @author Administrator
* 测试
*/
public class Test {
public static void main(String[] args) {
// Singleton.getInstance().test();//懒汉式
// Singleton01.getInstance().test();//饿汉式
}
}
/**
* @author Administrator 单例模式 饿汉式
*/
public class Singleton01 {
private Singleton01() {
}
public static Singleton01 getInstance() {
return singleton01;
}
//测试调用
public void test() {
System.out.println("java");
}
}
————————————————————————————————————————————————————
package cn.test.demo;
/**
* @author Administrator 单例模式 懒汉式
* 懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
*/
public class Singleton {
// 定义一个私有的静态全局变量来保存该类的唯一实例
private static Singleton singleton;
// 构造方法必须是私有的,外部就不能通过new来创建实例了
private Singleton() {
}
// 定义一个全局访问获取示例的静态方法,需要公开因为别人要通过这个方法获取示例
public static synchronized Singleton getInstance() {
// 即在第一次调用实例化,以后则不会示例化
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
// 测试调用
public void test() {
System.out.println("java");
}
}
————————————————————————————————————————————
package cn.test.demo;/**
* @author Administrator
* 测试
*/
public class Test {
public static void main(String[] args) {
// Singleton.getInstance().test();//懒汉式
// Singleton01.getInstance().test();//饿汉式
}
}