>
> Have anyone got ideas how to implement Singleton pattern in AS3 best?
> Constructor in AS3 can only be public or internal, which is not private
> anyway. ..
>
Well, internal should be enough to implement a Singleton
Just have a public const in the package initialized with an internal class
of the package
Something like that
myTest/MySingleton.as
-----------------------------
package myTest
{
public const MySingleton:Singleton = new Singleton();
}
-----------------------------
myTest/Singleton.as
-----------------------------
Package myTest
{
//default to internal, can only be accessed inside the package
class Singleton
{
//be sure to let the constructor internal
function Singleton()
{
//...
}
//be sure to have your methods/properties/etc. public
//so it can be accessed outside of the package
public function someMethod():String
{
//...
}
}
}
-----------------------------
And after well
import myTest.MySingleton;
MySingleton.someMethod()
etc.
I don't see the need of a private constructors at all
And furthermore private constructors imho would cause
more problems than solutions
What people oversee is that we are in ECMAScript,
A Singleton in this context should just be an object
That you can not copy and/or inherit in another prototype
So a public read-only object.
Here having an internal class inside a package prevent
to instanciate this class outside of the package
the public const force to have only one global access point to the
instancied object
So where is the problem ?
Not having private constructors is not a bug,
It's using a private constructor to implement singleton
which is imho a bug/hack from AS2 times.
http://www.mozilla.org/js/language/es4/core/definitions.html
private - Makes the definition visible only in the enclosing class's private
namespace
so following the standard if you got a private constructor
you just CAN NOT instanciate at all the class anywhere else
than inside the class !
private constructors just does not make sens.
zwetan
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders