Tired Of Bad Singletons

While looking through some code for a project, I saw that:

  public static final ProductYP instance = new ProductYP();
 
  public ProductYP()
  {
    if (instance != null)
      throw new RuntimeException("Only one instance allowed");

    prods = new HashMap();
  }

  public static ProductYP getInstance()
  {
    return instance;
  }

And I don't think it was done by a newbie... It's actually not far from being correct, it's just that the guy obviously does not know about private constructors. I have seen several broken singleton implementations in previous projects and had several debates on the double-checked locking pattern (it works since JDK1.5 with volatiles but is useless). I am upset to see another half broken implementation. Everybody should have read at least this.

What have you seen as broken singletons?

Comments

comments powered by Disqus