アプリケーション内で1つしか無い事を保証する生成方法(Singleton)を記載します。
グローバル変数などアプリケーション内で1つで良い場合があります。その場合にいくつもオブジェクトを作成されては困ります。のでそれを保証する書き方です。(必要性があるかといわれると・・・)
アプリケーションを起動した際の時間は1つで、次回起動するまで変わりません。それを例にします。
シングルトン例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
unsafe class GlobalTime { private static GlobalTime _Instance; /// <summary> /// コンストラクタ /// </summary> protected GlobalTime() { _Instance = null; _startDateTime = DateTime.Now; } /// <summary> /// インスタンスの取得 /// </summary> /// <returns></returns> public static GlobalTime getInstance() { if (_Instance == null) { _Instance = new GlobalTime(); } return _Instance; } /// <summary> /// 開始日時の取得 /// </summary> /// <returns></returns> public DateTime getStartDateTime() { return _startDateTime; } private DateTime _startDateTime; } |
上記ではコンストラクタをprotectedで保護します。のでnewでの生成ができません。
インスタンスは、getInstance()で取得して使います。
呼び出し側
1 2 3 4 5 |
//インスタンスの取得 GlobalTime gt = GlobalTime.getInstance(); //public メソッドの呼び出し DateTime dt = gt.getStartDateTime(); |