I've worked in shops with "Internal" and "External" services before. For example when you "hide" the main DataStore object and instead provide a "Facade" (not the pattern) that also implements things such as caching or auditing. In such a scenario The "Facade" object will require the "Internal" service collection (to get access to the DataStore) yet the plugins will be given the "External" service collection (so they can't directly access the DataStore).
A singleton pattern would not permit this object from being created twice (if you're also going to make the Ctor protected/private) and would therefore not allow such valid use of the object in an application.
Good example though, I'll give it +1
For example when you "hide" the main DataStore object and instead provide a "Facade" (not the pattern) that also implements things such as caching or auditing.
In such a scenario The "Facade" object will require the "Internal" service collection (to get access to the DataStore) yet the plugins will be given the "External" service collection (so they can't directly access the DataStore).
A singleton pattern would not permit this object from being created twice (if you're also going to make the Ctor protected/private) and would therefore not allow such valid use of the object in an application.
Thanks for the +1 tho. :D