Robert Klemme
12/25/2006 7:57:00 PM
On 25.12.2006 20:54, 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!
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
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
Kind regards
robert