Vegas for the week at a conference. In the Java world, ‘Singleton’ (at least to me) usually referred to the design pattern which allowed you to ensure that there would always only be a maximum of one object instance of a particular class. It was usually implemented by making the constructor private and providing an access method that returned a single (usually static) instance of an singular object. It might looked something like this:
public class SingletonExample {
/**
* Private class variable
*/
private static SingletonExample singleton;
/**
* This is the only method available to access the class variable.
* @return the singleton instance
*/
public static SingletonExample onlyInstance() {
if (singleton == null)
singleton = new SingletonExample();
return singleton;
}
/**
* The Ctr should be private
*/
private SingletonExample() {
}
}
Things appear to be slightly different in the Ruby world. A singleton or eigenclass in the Ruby world refers to a particular instance of an object, and ruby allows us to override the methods and behaviors of a particular object (note – not class).
?> class A >> end => nil >> ?> a = A.new => #<A:0x5ef664> >> b = A.new => #<A:0x5ee1d8> >> ?> class << a >> def to_s; "Instance method"; end >> end => nil >> ?> a => Instance method >> b => #<A:0x5ee1d8>
For more checkout: whytheluckystiff.