设计模式:可更新的注册式的单实例模式Java认证考试

文章作者 100test 发表时间 2009:04:30 06:30:13
来源 100Test.Com百考试题网


  遇到这样一个应用。在系统中需要大量的配置信息,为了不每次都找数据库或者配置文件。需要一个生命周期和App一样的容器(=静态变量),但是在配置信息被修改时还需要去更新这个容器。
  首先选用的是单实例模式。单实例模式中又可分为恶汉,懒汉,以及一种基于饿汉型的注册型。
  个人感觉懒汉型单例模式没什么,而饿汉型的更能体现java特点。然注册行的可扩展性较强,个人感觉有点像
  一个实例工厂。下面来一一列举。
  恶汉:
  Java代码
  public class EagerSingleton {
  private static final EagerSingleton m_instance = new EagerSingleton().
  private EagerSingleton() {
  }
  public static EagerSingleton getInstance()
  {
  return m_instance.
  }
  }
  懒汉:
  Java代码
  public class LazySingleton {
  private static LazySingleton m_instance = null.
  private LazySingleton() {
  }
  synchronized public static LazySingleton getInstance() {
  if (m_instance == null) {
  m_instance = new LazySingleton().
  }
  return m_instance.
  }
  }
  注册型:
  Java代码
  public class RegSingleton {
  static private HashMap m_registry = new HashMap().
  static {
  RegSingleton x = new RegSingleton().
  m_registry.put(x.getClass().getName(), x).
  }
  protected RegSingleton() {
  }
  static public RegSingleton getInstance(String name) {
  if (name == null) {
  name = "name".
  }
  if (m_registry.get(name) == null) {
  try {
  m_registry.put(name, Class.forName(name).newInstance()).
  } catch (Exception e) {
  System.out.println("Error happened.").
  }
  }
  return (RegSingleton) (m_registry.get(name)).
  }
  }
  Java代码
  public class RegSingletonChild extends RegSingleton {
  private RegSingletonChild() {
  }
  /**
  * 静态工厂方法
  */

相关文章


java认证辅导:从Java技术看网页游戏的发展Java认证考试
java认证:基于Java事务模型的事务策略Java认证考试
JAVA资格认证:利用ExtJS构建客户端三层初探Java认证考试
详解AJAX核心中的XMLHttpRequest对象Java认证考试
设计模式:可更新的注册式的单实例模式Java认证考试
java认证:数据库中安全知识介绍Oracle认证考试
java认证:简单理解Java中的输出流异常Java认证考试
java认证:高可移植性J2ME软件开发笔记Java认证考试
java认证:Java学习如何走出第一步Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛