[Catalyst] Re: using Plugin::Singleton and testing

Daniel McBrearty danielmcbrearty at gmail.com
Fri Nov 17 10:54:17 GMT 2006


A global is something that is in the global namespace. A singleton
isn't, any more than other class is. You have to import the class to
which it belongs to use it.

Noone mentioned making the *stream* a singleton. I'd expect to find
teh *stream* at OS level. It's just that an audio *player* is a better
example of something that you might want to be assured that there can
only be one *instance* of.

Until someone actually presents a solid reason why you should *never*
have a class which can only have a single instance, the argument is
going nowhere, as far as I can see.

(apologies for polluting the list with this rather OT stuff ...)

On 11/17/06, Adam Clarke <adam.clarke at strategicdata.com.au> wrote:
> On 17/11/2006, at 4:37 PM, Jonathan Rockway wrote:
>
> > On Thursday 16 November 2006 20:08, A. Pagaltzis wrote:
> >> A singleton is nothing but a global variable, except the
> >> identifier comes from the class namespace rather than the
> >> variable namespace. Put it in a global variable already.
> >
> > Not entirely true.  Try this:
> >
> > $global = "Oops, accidentally overwrote the instance with garbage.";
> >
> > vs.
> >
> > Singleton->get_instance() = "Oops, accidentally overwrote the
> > instance.";
>
> Not really, because ...
>
>      use Readonly;
>
>      Readonly my $global => "Warming";
>
>      print "Before => $global\n\n";
>
>      eval {
>          $global = "Oops, accidentally overwrote the instance with
> garbage.";
>      };
>      if ($@) { print "Error (would have died if uneval'd) => $@\n"; };
>
>      print "After => $global\n";
>
> produces ...
>
>      Before => Warming
>
>      Error (would have died if uneval'd) => Modification of a read-
> only value attempted at t.pl line 8
>
>      After => Warming
>
> No matter what my prime minister says.
>
> Cheers
> --
> Adam Clarke
> www.strategicdata.com.au
>
>
>
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/
>


-- 
Daniel McBrearty
email : danielmcbrearty at gmail.com
www.engoi.com : the multi - language vocab trainer
BTW : 0873928131



More information about the Catalyst mailing list