Class design

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

Kind regards

  robert

Just use a module for this:

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!