Home > Adobe AIR | Adobe Flex > AS3のSingletonの書き方をちょっと変えた。リベンジ。

AS3のSingletonの書き方をちょっと変えた。リベンジ。


こないだのSingletonがうまく動かなくて自分でへこんでたからリベンジだこのやろう。


というわけで、さかっさんとの合作で出来上がった新しいSingleton。



コペルニクス的逆転の発想。


パッケージ外クラスでインスタンスを取得してやるのさっ


これでget instance の度にnewするべきかどうかチェックしなくていい。

Wicked南海謹製なり。

Comments:3

Comment Form
nobu 2008年4月 5日 16:32

元ネタこれですよね?
http://d.hatena.ne.jp/sato-shi/20060528/p2

動かないToT
その"コペルニクス的"のところによく気づきましたね。私はいまいちなんでそれでOKで、元ネタの方でダメなの
かがよく分かりませんorz

nobu 2008年4月 5日 17:31

ちょっと(Flex2で)いぢってみたのですが質問です。

このSingletonクラスに例えば、nameっていうプロパティを定義します。

で、Singletonを使う実行クラスでは、次のようにインスタンスを取得しますよね?(前の日記より)
var ins1:HogeSingleton = HogeSingleton.getInstance();

で、実行クラスで、取得したインスタンスのnameプロパティをAlertで表示しようとおもって、こんな風に
する。

Alert.show(ins1.name);

これで、コンパイル通ります???
私の所は、これで「nameは未定義だよ」とか言われます。結局、ビルド通ったのは

Alert.show(HogeSingleton.getInstance().name);
 or
Alert.show(ins1.HogeSingleton.getInstance().name);

こんな感じ。・・・意味ねぇぇぇぇぇ(^-^;;;
なんかクラス変数として認識されているみたいなんですけど・・・。

Singletonの意味を間違って認識してるかと思って、Javaで同じ事やらせたらOKでした。
なんか間違ってますかね?

hirossy 2008年4月 7日 04:01

nobuさんフィードバックどうもです

元ネタはよこたさんのかっていうとそうでもなくて。
で動かない原因は、
staticなクラス変数を宣言する際にnewしてるので、クラスがロードされるタイミングでnewしようとする。
なので、staticなクラス変数がロードされる時は、まだパッケージ外クラスがロードされてないからじゃないかなと。
想像ですけど。


> Alert.show(ins1.name);
> これで、コンパイル通ります???

ちゃんとコンパイルとおりますよ〜

Trackbacks:0

TrackBack URL for this entry
http://www.nankaifactory.com/blog/mt-tb.cgi/25
Listed below are links to weblogs that reference
AS3のSingletonの書き方をちょっと変えた。リベンジ。 from nankaifactory.com

Home > Adobe AIR | Adobe Flex > AS3のSingletonの書き方をちょっと変えた。リベンジ。

HIROSSY BLOG
Feeds

Return to page top