[追記] AS3的デザインパターンについての独り言 

こないだポストした「AS3的デザインパターンについての独り言」について、色々な方々からTwitterとかBlog上でコメントをいただきました。ありがとうございます。

で、大方の意見は

「Singleton.getInstance()をSingleton.instanceにするのは賛成だけどIterrator.next()をIterrator.nextにするのはどうかな...? あ、もちろんIterrator.hasNextはいいと思うよ!」

と言う感じでした。
なぜIterrator.nextが推奨されないのかというと、「next()は内包する配列のポインタを進めるという重要な操作を担っているので明示的にメソッドにしたほうがいい」という理由です。

ここら辺は自分でも迷ってたところなので、色々な方々のご意見を聞くことが出来て良かったです。

で、ここからは個人的な話で、なぜnextに、プロパティにしようと思ったのかについて。

そもそもはAdobeのコーディングガイドラインにプロパティベースのAPIの方がmxmlと親和性が高いと書かれている点です。mxmlを書いたことはほとんど無いですが、xml形式で開発するなら多分間違いなくその通りでしょう。

もう一つはTextFieldクラスなどで、" myTextfield.text = "helloworld"; " と書けばきちんと表示される点です。これは額面取りに「text」という「String型プロパティ」に値を格納しているだけではなく、内部的にゴニョゴニョと表示関係を操作しています。禁則処理もかけたり、自分で実装するのは絶対に避けたいような処理を行ってくれていると推測できます。

これはTextFieldクラスに限ったことではなく、Spriteクラス、これも同様です。たとえば" mySprite.x=100; " が額面通り「Number型のxプロパティ」に100を代入しているだけではないことは明らかです。実際には100という数値を受け取り、mySpriteをx軸の100ピクセルの位置へ配置し、描画しています。

もしASのgetter、setterの仕様が「プロパティ」として振る舞えないものであったなら、myTextfield.setText("helloworld") や mySprite.setX(100)  と記述しなければならなかったかもしれません。

そう考えるととたんにgetter、setterの恩恵を実感出来て何でもかんでもプロパティとして実装したくなります。解っていただけたでしょうか??

さらに " myTextfield.text+="helloworld"; " が推奨されず " myTextfield.appendText("helloworld"); " が推奨されてる辺りも示唆に富んでいますね。
多分。


Trackback

http://memo.kappa-lab.com/mt-tb.cgi/242

Leave your comment :

(いままで、ここでコメントしたことがないときは、コメントを表示する前に承認が必要になることがあります。そのときはしばらくお待ちください。)




RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.