public class Main { /** * 单例设计模式 保证类在内存中只有一个对象 * @param args */ public static void main(String[] args) { /** * 成员变量被私有,不能通过类名.调用 */ //Singleton s1 = Singleton.s; //Singleton.s = null; //Singleton s2 = Singleton.s; //System.out.println(s1 == s2);//false Singleton s1 = Singleton.getS(); Singleton s2 = Singleton.getS();//无法修改S的值 System.out.println(s1 == s2); } } /** * 饿汉式: * 空间换时间 * 多线程访问不会创建多个对象 * * @author admin * */ class Singleton { //1私有构造方法,其他类不能访问该构造方法 private Singleton(){ } //2创建本类对象 private static Singleton s = new Singleton(); //3对外提供公共的访问方法 public static Singleton getS() { return s; } } /** * 懒汉式(开发不用),多线程访问出现安全隐患 * 时间换空间 * 多线程访问可能创建多个对象 * @author admin * */ class Singleton2 { //1私有构造方法,其他类不能访问该构造方法 private Singleton2(){ } //2声明一个引用 private static Singleton2 s; //3对外提供公共的访问方法 public static Singleton2 getS() { if(s == null) { s = new Singleton2(); } return s; } } /** * 第三种 * @author admin * */ class Singleton3 { //1私有构造方法,其他类不能访问该构造方法 private Singleton3(){ } //2声明一个引用,用final修饰 public static final Singleton3 s = new Singleton3(); }
java设计模式:单例设计模式
猜你喜欢
转载自blog.csdn.net/Pastthewind/article/details/80278288
今日推荐
周排行