dgh*_*htr 4 java singleton design-patterns
我正在探索单身设计模式,我开发了一个类......
public class SingletonObject {
private static SingletonObject ref;
private SingletonObject () { //private constructor
}
public static synchronized SingletonObject getSingletonObject() {
if (ref == null)
ref = new SingletonObject();
return ref;
}
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException ();
}
}
Run Code Online (Sandbox Code Playgroud)
但同步是非常昂贵的,所以我转向热切创建的实例的新设计而不是懒惰创建的实例.
public class Singleton {
private static Singleton uniqueInstance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return uniqueInstance;
}
}
Run Code Online (Sandbox Code Playgroud)
但请告诉我第二个设计如何优于以前的设计.. !!
Josh Bloch建议使用枚举:
public enum Foo {
INSTANCE;
}
Run Code Online (Sandbox Code Playgroud)
有关解释,请参阅Google I/O 2008上的Effective Java Reloaded talk.
综上所述:
"这种方法在功能上等同于公共领域方法,除了它更简洁,免费提供序列化机制,并提供防止多个实例化的铁定保证,即使面对复杂的序列化或反射攻击.虽然这种方法有尚未被广泛采用,单元素枚举类型是实现单例的最佳方式."
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |