singletonとstatic classの使い分け方
転職しました。
久しぶりに実装しています。
iPhoneやAndroidに絡めそうなのでわくわくしてますww
引き継ぎという形ですが、実相はやっぱり楽しい!!
さて、自分以外の人間が書いたコードを見ると、違和感が少なからずありますよね?
今回のタイトルもそういう違和感が元です。
さて、singletonとstatic class。
両者の使いどころ、違いを吟味せずに使用している方は多いのではないでしょうか?
平平凡凡なプログラマーである私もその一人ですw
Twitterでちょっとつぶやいてみたところ、
staticで宣言すると下記のようなメリットがあるようです。
1. メモリ量節約
・ゲーム屋さんと私との、そもそもstaticという宣言の使い方の違いが顕著に表れています。
2. そのクラスのstaticなものにしかアクセスさせない
・使用制限という意味では、C#のprivate set;見たいな、スコープ範囲制限みたいな使い方ですね。staticメソッドからは、staticなものにしか触れないので一種の制約見たいなもんですね。
3. メンバ変数をいじらない保証として宣言する
・これも2.と一緒のような気がします。
個人的に過去にsingletonを使用した時は、親Formを一つしか生成したくないときとか、ユーティリティクラスをsingletonでインスタンス提供したりとかぐらいです。
class、methodを全てstaticで宣言しているコードを見たことがありますが、やはりいざ実行してみると重いですし、どこでプロパティが変更されるか分からないので、客観的に見ても恐ろしかったです。
プロパティを持たずに、あくまでメソッドのみstaticで提供するのであれば、ありっちゃありのような気がします。
ただ、インスタンスの個数を制限したいとか、保証したいって時はsingletonパターンを使用します。
みなさんはこのsingletonとstatic classどう使い分けてますか?