Singleton class - instance or class variables?

C

Caleb Tennis

When using a singleton class (one that includes Singleton, not an
eigenclass), can anyone think of any advantage/disadvantage to using
class variables over instance variables (or visa versa) to access
data in the class?

Thanks,
Caleb
 
E

Eero Saynatkari

Caleb said:
When using a singleton class (one that includes Singleton, not an
eigenclass), can anyone think of any advantage/disadvantage to using
class variables over instance variables (or visa versa) to access
data in the class?

I would recommend using class instance variables,
but the only reason I can think relates to resource
control and instance instantiation. For the typical
case one could just as well use classes and class
instance methods.
Thanks,
Caleb


E
 
J

Joel VanderWerf

Caleb said:
When using a singleton class (one that includes Singleton, not an
eigenclass), can anyone think of any advantage/disadvantage to using
class variables over instance variables (or visa versa) to access data
in the class?

In answer to this question and the one about thread-specific singletons:
another approach to consider is using a dependency injection framework.
They all support singleton services, and at least some of them support
services that return one unique object per thread.

One disadvantage to using class variables (@@var) is that they are (in
the current ruby) per-hierarchy, not per class. So a subclass will share
the value of @@var. This is, I've heard, going to change in ruby 2.0.
 
A

ara.t.howard

When using a singleton class (one that includes Singleton, not an
eigenclass), can anyone think of any advantage/disadvantage to using class
variables over instance variables (or visa versa) to access data in the
class?

inheritence will break with either.

with @@var then

class Singleton
@@var = 42
end

class SingletonII < Singleton
@@var = 'forty-two'
end

class Singleton
p @@var #=> 'forty-two'
end

but with @var

class Singleton
@var = 42
end

class SingletonII < Singleton
end

class SingletonII
p @var #=> nil
end

my traits lib solves this - if inheritence of class data is important. it may
not be.

regards.

-a
--
===============================================================================
| ara [dot] t [dot] howard [at] noaa [dot] gov
| all happiness comes from the desire for others to be happy. all misery
| comes from the desire for oneself to be happy.
| -- bodhicaryavatara
===============================================================================
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top