The title of this post may sound a little odd, but here's the situation we've run into. We're incorporating the singleton pattern in our application to manage file watching. It's actually a nice, slick design - the end result is we're doing something like this:

SpecificData data = SpecificData.Instance;

This works well because the file that SpecificData watches is named in a configuration file. But this pattern is limiting because we can't pass in the name of the file. Instance is a property so we can't define arguments. Even if we change it to a method like GetInstance(), it still won't work because the structure of our implementation requires the same signature.

There's a way around this - I'll generalize it using the creator pattern: