标签:style blog color ar strong sp div on log
单例设计模式:一个类有且仅有一个实例,并且自行实例化向整个系统提供
要点:
一是某个类只能有一个实例——私有的构造方法;
二是它必须自行创建这个实例——指向自己实例的私有静态引用;
三是它必须自行向整个系统提供这个实例。——以自己实例为返回值的静态的公有的方法
单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加载时,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法的时候才去实例化对象。代码如下:
饿汉式
1 public class Singleton { 2 private static Singleton singleton = new Singleton(); 3 private Singleton(){} 4 public static Singleton getInstance() { 5 return singleton; 6 }
懒汉式
1 public class Singleton { 2 private static Singleton singleton; 3 private Singleton() {} 4 5 public static synchronized Singleton getInstance() { 6 if (singleton == null) { 7 singleton = new Singleton; 8 } 9 return singleton; 10 } 11 }
第三种格式
1 class Singleton { 2 private Singleton() {} 3 public static final Singleton singleton = new Singleton(); 4 }
优点:
在内存中只有一个对象,节省内存空间;
避免频繁的创建和销毁对象
可以在系统设置全局的访问点,优化和共享资源的访问,确保所有对象都访问唯一实例。
应用实例:
1 class Singleton { 2 private int num = 10; 3 private static Singleton singleton = new Singleton(); 4 private Singleton() {} 5 6 public static Singleton getInstance() { 7 return singleton; 8 } 9 public void setNum(int num) { 10 this.num = num; 11 } 12 public int getNum() { 13 return this.num; 14 } 15 } 16 17 class SingletonDemo { 18 public static void main(String[] args) { 19 Singleton s = Singleton.getInstance(); 20 Singleton s1 = Singleton.getInstance(); 21 s.setNum(10); 22 System.out.println(s.getNum()); 23 System.out.println(s1.getNum()); 24 } 25 }
标签:style blog color ar strong sp div on log
原文地址:http://www.cnblogs.com/xzgc/p/4025511.html