单例模式定义:保证一个类仅有一个实例,并提供访问它的方式。
当需要控制单一实例数或节省系统资源的时候,可以使用单例模式。
以下代码演示单例模式简单的实际运用:定义一个Singleton类:
package com.ldl.cn.SingletonModel;
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {};
public static Singleton getInstance() {
return instance;
}
public void print() {
System.out.println("Hello,design pattern.");
}
}
编写测试类:
package com.ldl.cn.SingletonModel;
public class TestSingletonPattern {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
singleton.print();
}
}
运行结果:
Hello,design pattern.需要说明的是,单例模式有两种实现方式,现提供代码如下:
饿汉式单例模式:
package com.ldl.cn.SingletonModel;
public class HungarySingleton {
private static HungarySingleton singleton = new HungarySingleton();
private HungarySingleton() {};
public static HungarySingleton getInstance() {
return singleton;
}
}
懒汉式单例模式:
package com.ldl.cn.SingletonModel;
public class LazySingleton {
private static LazySingleton singleton;
private LazySingleton() {}
public static synchronized LazySingleton getInstance() {
if (singleton == null) {
singleton = new LazySingleton();
}
return singleton;
}
}