如何解决该静态类实现哪种模式?
|package com.mycontainer;
public class MyContainer {
private static ContainerConfig cConfig;
private MyContainer() {
}
public static ContainerConfig getConfiguration() {
if (cConfig == null)
cConfig = new ContainerConfig();
return cConfig;
}
}
解决方法
我不得不说,这是延迟初始化和Singleton模式的较差的实现。没有同步,因此没有线程安全。在访问此代码的多个线程下,您可能会遇到多个实例。
更新:最好将您的代码如下所示:
package com.mycontainer;
public class MyContainer {
// static final singleton object to rely on class loader to create it for you
// in a thread safe way
private static final ContainerConfig cConfig = new ContainerConfig();
// private constructor to prevent instantiation
private MyContainer() {}
// getter method for your singleton object
public static ContainerConfig getContainerConfig() {
return cConfig;
}
}
, 这可能是Singleton模式:http://en.wikipedia.org/wiki/Singleton_pattern#Implementation
, 这绝对是Singleton模式。
contructor是私有的,这意味着只有此类可以实例化自己。
方法getConfiguration()是静态的,它实例化了应要求返回的私有静态实例,以确保在运行时该类只有一个对象。
编辑:它可能是Singleton-FAIL,但它源自Singleton。 ;]
, 延迟初始化。您将延迟初始化,直到需要它为止。
请参阅http://www.javapractices.com/topic/TopicAction.do?Id=34。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。