Almost every use of singleton I have encountered was best replaced by an attribute accessor in a higher level object that is then either


  • explicitly passed around via a parameter, or
  • used via a dynamically bound variable (possibly within a thread-safe wrapper)