[Seaside] Re: Seaside & Ruby Rails Compared

goran at krampe.se goran at krampe.se
Thu Sep 8 09:01:03 CEST 2005


Hi folks!

=?ISO-8859-1?Q?G=FCnther_Schmidt?= <gue.schmidt at web.de> wrote:
> Avi,
> 
> Avi Bryant wrote:
> > 
> > On Sep 7, 2005, at 4:56 PM, Günther Schmidt wrote:
> > 
> >> Goran,
> >>
> >> sorry, but I think that's bad practice.
> >>
> >> I suggest to use singletons that act as brokers instead.
> > 
> > 
> > What Göran was describing - having a class with a Default class var -  
> > sounds exactly like a singleton to me.  Is there some other pattern  you 
> > prefer?
> > 
> > Avi
> 
> the class variable should hold the one single instance of the class, and 
> not anything else.

Which is exactly what I meant. This is btw conceptually the same thing
as having a global that is only available in the scope of the class,
subclasses and all instances/subinstances.

One could use a class instvar too - granted. Though people don't tend
to, not sure exactly if there are good reasons not to.

> The instance is the one that holds on to a list of objects of interest 
> (plus methods for adding and removing). I understood Göran's proposal to 
> use the class not for creating instances at all, but use it only to 
> provide slots for various data.

Eh, "only to provide slots for various data"? When did I say anything
like that?
Sure, I said "global state" instead of "singleton instance", perhaps
that triggered the misunderstanding.

So yes, it is almos the Singleton pattern, but not entirely - IIRC the
Singleton pattern states that it actively stops you from creating more
than one instance. I don't do that with SMSqueakMap for example, I just
keep track of a default instance that the tools can use when they are
"in doubt".

Almost everyone uses that default instance (when it comes to
SMSqueakMap) but there is/should be nothing stopping you from creating a
second separate instance and use that too, but then you will have to
"hold onto it" on your own.

regards, Göran


More information about the Seaside mailing list