Cairngorm at start up creates a single instance of a command class at start 
up.

ARP, another framework like Cairngorm, creates an instance of a command when 
it's called.

Multiple calls to a Cairngorm command via EventBroacaster use the same 
Command instance.

Multiple calls to an ARP command via EventBroacaster use a new Command 
instance.

While I've been told Commands should be stateless, I disagree.  Since you 
can't block in Flash Player and everything is asyncronous, I think Commands 
should have some form of state, even if this state is internal, and is 
merely in the form of callback functions that it only uses for itself (aka 
private).

That said, Cairngorm's low-level design clearly believes and encourages 
stateless Commands since only 1 instance of a Command class every exists.

Cairngorm keeps a reference to the Command class instances, so they don't 
really ever go out of scope because they are kept internally in the commands 
array.

I know that's not a solution, just information, but figured important 
nonetheless.

----- Original Message ----- 
From: "Tim Hoff" <[EMAIL PROTECTED]>
To: <flexcoders@yahoogroups.com>
Sent: Monday, April 17, 2006 12:46 PM
Subject: [flexcoders] Cairngorm2 Commands and Singletons


Apparently, there has been much discussion concerning singletons
here already, but the search feature of this site doesn't seem to
ever return complete results.  Coming from a .NET background, I've
had to change a lot my thinking in regards to objects. This is a
good thing.  However, in .NET (VB.NET, C#.NET Java.NET) when an
object is instantiated, let's say a class in this case, as soon as
the object goes out of scope, it is automatically disposed of by the
garbageCollector.  This doesn't seem to be the case in AS3.  I've
patterned an application on the Cairngorm samples that have been
provided so far.  The samples are great and I really appreciate
them, but none of them make multiple calls to the back-end.  Using
the code provided, if I execute multiple search commands (let's say
getAuthors), each one of the command instances, along with the
associated event listeners and objects, still exist after the result
or fault is returned.  Thus, when an error is displayed
like: "Sorry, no authors found.", since all of the
commands/delegates are still listening to the data service, a
separate alert box appears for each instance of the command.  Three
calls, three alert boxes.

I'm not sure if I should make the commands and delegates singletons,
or manually dispose (delete _oSingleton) of the instances.  Since
the application is Cairngorm based, I don't want to stray too far
from best practices.  I was just wondering if anyone else had
experienced this problem and if there were some links or advice that
could be offered?  I also want to say that I think that the Adobe
team is doing a great job.  I can't wait for the release of Flex2.
It's going to turn a lot of heads.

Many thanks,
Tim Hoff

P.S.  It would be nice to have something like the following:

public singleton class myClass {}








--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
Yahoo! Groups Links







--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to