How do I design a class such that it can never be instantiated? Say for example a class containing static members alone, which requires no instantiation!
···
--
_ _ _]{5pitph!r3}[_ _ _
__________________________________________________
“I'm smart enough to know that I'm dumb.”
- Richard P Feynman
How do I design a class such that it can never be instantiated? Say for example a class containing static members alone, which requires no instantiation!
You can apply some tactics to make it harder but AFAIK there is no safe way to completely prevent instantiation. Typically something like this will suffice
class Foo
def self.new(*a,&b) raise "Must not instantiate!" end
end
irb(main):004:0> Foo.new
RuntimeError: Must not instantiate!
from (irb):2:in `new'
from (irb):4
···
On 25.12.2006 20:54, Spitfire wrote:
from :0
Other than that you can also use module Singleton, which is probably better documentation wise:
irb(main):005:0> require 'singleton'
=> true
irb(main):006:0> class Bar
irb(main):007:1> include Singleton
irb(main):008:1> end
=> Bar
irb(main):009:0> Bar.new
NoMethodError: private method `new' called for Bar:Class
from (irb):9
from :0
module Static
# ... defined constants and methods here ...
end
James Edward Gray II
···
On Dec 25, 2006, at 1:55 PM, Spitfire wrote:
How do I design a class such that it can never be instantiated? Say for example a class containing static members alone, which requires no instantiation!