"Chris Gehlker" <canyonrat / mac.com> schrieb im Newsbeitrag
news:CACB6AEA-E176-11D6-A92E-000A27DA50C4 / mac.com...
> There is no need to enforce the use of the factory method. What needs
> to be enforced is that the program cannot instantiate an instance of
> the cluster base class. This corresponds directly to the C++ case where
> their is no enforcement of a restriction on directly constructing a
> derived concrete class but there is enforcement of the "no
> instantiation of virtual classes" rule.
>
> >   3) Having a private constructor in Ruby doesn't make sense; this is
> >      the purpose of a Module (you can always instantiate a Class, but
> >      you can't always instantiate a Module)
>
> Having a private constructor makes sense for cluster base classes and
> singleton classes.
> > Perhaps if you provide a sample implementation it would be easier to
>
> I'll try and translate my drawing program from ObjC to Ruby.

suggestion:

class Shape
    def move ... end
    def resize ... end
    def bounding_rectangle() ... end

  private
    def initialize() raise "Cannot instantiate"; end

    def init()
      # initializations
    end
end

class Rectangle < Shape
  private
    def initialize()
      # don't 'super' here but:
      init()
    end

    def init()
      super
      # other initializations
    end
end

regards

    robert