C# Programming

【C#】シングルトンパターンの使い道【デザインパターン】

Pocket

こやま
シングルトンパターンについて紹介します!

こんにちは、せのりです。

 

今回はデザインパターンの1つ、シングルトンパターン(Singleton)について整理しました!

 

本記事は、以下のような方を対象にしています。

  • シングルトンパターン?何それって方

 

それでは行きしょう!!

 

シングルトンパターンとは?

クラスのインスタンスが1つしか生成されないことを保証するデザインパターンのこと。

コンストラクタは private のため、自由にオブジェクトを作ることは不可能となります。
公開プロパティ(Instance)でインスタンスを返却しています。

[itemlink post_id="476"]

いつ使うの?

あるクラスのインスタンスを1つしか生成したくないときに使います。

例えばログクラス。

ログ出力する際、一時的にインスタンスに出力内容を保持すると思いますが、
複数のプログラムからインスタンス生成してログ出力すると、
出力内容をどこかでマージする必要が出てきます。
シングルトンでインスタンスの生成を制限しておけば、出力内容のマージは不要になります。

あとはクラス間でデータ共有したい場面ですね。
class A でシングルトンクラスのインスタンス生成⇒データ編集⇒class B で class A で編集したデータを使用とか。
クラスでインスタンスが1つしか生成できないので、初めに作成したインスタンスを別クラスと兼用することができます。

 

サンプルプログラム

例にあげたシングルトンのログクラスです。

コンストラクタは private、公開プロパティ(GetInstance)でインスタンスを返却していますね。

ログクラスに関しては以下記事でまとめています!

参考
【C#】自作ログクラスを作成しよう!【log4netなし】

こやまC# でログ出力クラスを作成してみましょう! 小規模の案件では自作のログクラスを作成することもあるかと思います。 そこで、勉強も兼ねてログ出力クラスを作成してみました! 設定ファイルで厳密にログ ...

まとめ

今回はシングルトンパターンについてまとめました。
シングルトンパターンの使い道やメリットが伝わりましたでしょうか?

ログ出力のように1アプリケーション上で明確に1つだけに制限したい場合に有用です。
ただし、多用するとプログラムの結合度が高くなり単体テストがしづらくなるデメリットもあります。
使用する際はしっかり見極めましょう。

今回は以上です。それでは!!

-C#, Programming

Copyright© SENORI BLOG , 2021 All Rights Reserved Powered by AFFINGER5.