在程序设计中,有一个非常有意思的驳论:时间与空间。在程序开发的过程中,往往要选择是以时间换取空间,还是以空间换取时间。
单例的设计模式解决的问题:使得一个类只能够创建一个对象。
1 // 饿汉式单例:以空间换时间 2 class Singleton1 { 3 4 //1) 不能在外部随意创建对象,把构造器私有化 5 private Singleton1() { 6 } 7 8 //2) 不能在外部创建对象, 只能在内部创建对象, 声明一个私有的静态的指向本类对象的引用变量. 9 private static Singleton1 only = new Singleton1(); 10 11 //3) 因为对象私有化了,所以只能通过公共的静态方法获取这个唯一的对象 12 public static Singleton1 getInstance() { 13 return only; 14 } 15 16 } 17 18 // 懒汉式单例(可能存在线程安全问题的):以时间换空间 19 class Singleton2 { 20 21 //1) 不能在外部随意创建对象,把构造器私有化 22 private Singleton2() { 23 } 24 25 //2) 不能在外部创建对象, 只能在内部创建对象, 声明一个私有的静态的指向本类对象的引用变量. 26 private static Singleton2 only; 27 28 //3) 因为对象私有化了,所以只能通过公共的静态方法获取这个唯一的对象 29 public static Singleton2 getInstance() { 30 //第一次调用时才创建对象 31 if (only == null) { 32 only = new Singleton2(); 33 } 34 return only; 35 } 36 37 }
转载请注明出处!
http://www.cnblogs.com/libingbin/
感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。