プロが教える店舗&オフィスのセキュリティ対策術

C#で定数クラスをシングルトンで作るという話が上がったのですが、シングルトンがよく分かっていません。
定数クラスをシングルトンって意味あるの?という質問になります。

自分としては、定数でgetは入れられない認識なので、定数ごとにget関数をそれぞれに作らないといけなくなる想定でいます。
例)
public class constant{
private const long value = 100;
public getValue(){ return value; }
private static constant instance = new constant();
public static constant GetInstace() => instance;
}

使い方としては
①GetInstance
②getValue
になる認識。

ただ、定数なら値の変化もないですし、何をしにシングルトンなのかが分かりません。
Get作るのも手間ですし。
クラス構成はシングルトンにして、定数もpublicにして「クラス名.定数名」でとればいいじゃないか、と言った人も居たのですが、それだと何しにシングルトンなの?と思っています。
「クラス名.定数名」でもコンストラクタ通るから、これでシングルトンにする意味あるだろ的なことも言われました。

結局、何を聞きたいかと言いますと、定数用クラスでシングルトンって何か意味あるの?って話になります。

A 回答 (5件)

これだけだと完全にシングルトンは無駄ですよね。


シングルトンの使い方を履き違えてます。
シングルトンは定数を扱うためのものではなく、オブジェクトをどんなタイミングでいくつ使っても同じオブジェクトを入手できて操作できることに意味を持ちます。

これだけのものなら、スタティッククラスにすればいいだけです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
同じことを考えていました。
やはりただただ固定値取りたいだけなら、シングルトンにする必要はないですよね。
励みになりました。
進言してみようと思います。

お礼日時:2018/07/21 10:37

ひょっとしてこっちの話かな。



例えば、音符(音程+長さ)を現すimmutableなクラスが
有るとすると、楽譜を作るのにラの四分音符のインスタンスはー個で充分です。
つまりシングルトン=定数オブジェクト
#普通の意味のシングルトンではなく
#同一状態(定数状態)のインタンスを1個に制限する。

ならば、publicなコンストラクタを提供せず、
音程と長さをパラメータにとりシングルトンを返す
ファクトリメソッドを作れば、音符の使うメモリが激減します。

というような話ではない???
    • good
    • 0

意味ないです。


私の知る範囲で定数保持用のクラスをシングルトンにしているプロジェクトは
皆無ですね。

c#では static readonly 型フィールドを使うのが一般的。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
励みになりました。
打ち合わせで進言してみます。
※文字や数値の、実行時の状態依存な訳ではなく、完全固定値予定になるため、速度的に優秀と噂のconstで定数は作る予定です。

お礼日時:2018/07/21 10:48

No.1です。



えっと。。。(^^;
恐らくメンバー全員がC#での製造・試験は出来るが、オブジェクト指向の本質的な部分をしっかり学ばれたことがないのだと思います。
Getを作るのが面倒だし、、、といった問題ではないのですが。。。(^^;
C言語の外部変数的な見方で進めては。。。

その理解でも「動くもの」、「保守・改良開発出来るもの」は出来ます。
はい。
    • good
    • 0
この回答へのお礼

再回答ありがとうございます。
Getを作る手間とかはほんと面倒くせーをボソッと言った感じでした。
わざわざシングルトンにする有用性とステップ数、工数の観点から、何ゆえシングルトン?といったところです。

お礼日時:2018/07/21 10:44

定数をまとめたクラスだからこそシングルトン(インスタンスを1つだけ)とする意味があるかと。

。。
複数あることに意味がない物はまさにシングルトンにすると「無駄」を省けます。
    • good
    • 0
この回答へのお礼

いえ、私としては、なぜインスタンス作成を要するシングルトンなのかがネックになっています。
定数で不変値なのですから、グローバルでいいじゃないか、が率直な気持ちです。
そのあたりを含め、果たしてシングルトンを通すことの有用性が解りかねる、といった質問になります。
可変の変数を同インスタンスで共有したい、などでしたらシングルトンも分かるんですけども。。。

お礼日時:2018/07/20 16:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!