I disagree… probably they are not well used, but this is the meaning of each selector:
- #uniqueInstance. As it says… a pure singleton. example: Author class>>#uniqueInstance. Ideally, classes using this method also cancels #new. - #default. It gives you a default instance (as name says), but you can also create instances of it, for other uses. example: RPackageOrganizer class>>#default. - #current. It gives you a singleton, but something that can change under certain circumstances, like a UI theme or a platform change. example: OSPlatform class>>#current. so… I do agree there are a lot of wrong uses there, that needs to be fixed… but each of the used selectors have a meaning, and a different meaning than the others. cheers, Esteban > On 08 Apr 2015, at 11:31, Christophe Demarey <[email protected]> > wrote: > > Hi, > > We use quite often the singleton pattern but when I need to use one, I always > need to ask myself "What is the selector to get this singleton?". > We use either aClass>>current, aClass>>default or aClass>>uniqueInstance. > Could we agree on the selector to use and update existing code? > > To get a quick overview, I searched about these methods in a Pharo4 image > and get these results: > ((SystemNavigation default allImplementorsOf: #default) select: #isMetaSide) > size. "45" > ((SystemNavigation default allImplementorsOf: #current) select: #isMetaSide) > size. "40" > ((SystemNavigation default allImplementorsOf: #uniqueInstance) select: > #isMetaSide) size. "19" > > Your opinion? > > Christophe.
