TotalTech

フリーランスのプログラマーが、技術情報・ガジェット・仕事術について書いてゆきます。資料価値の高い記事を目指しています。コーヒー好きです。

TotalTech

VB.NETでSingletonパターンを用いる方法

VB.NETでSingletonパターンを用いる方法

デザインパターンの一つに、Singleton(シングルトン)というものがあります。プログラム全体で、そのクラスのインスタンス(実体)が1つである事を保証する、デザインパターンです。

アプリケーション全体を表すクラスなど、複数のインスタンスが必要ない(許容したくない) 時に使います。

今回は、VB.NETでSingletonパターンを使う方法を、解説します。

デザインパターンとは

ソフトウェア開発においてよく出てくるパターンを、Gofと呼ばれる4人のプログラマが幾つかのパターンにまとめたものを、デザインパターンといいます。

デザインパターンを知っていると、自分のソフトウェア開発に適用して、普遍的な設計をすることができます。また、他の人に設計のアイデアを伝える時も、「これは~パターンです」といえば伝わるので、便利です。

デザインパターンの一つに、Singleton(シングルトン)というパターンがあります。

Singletonパターンとは

Singletonパターンとは、プログラム全体でそのクラスのインスタンスが1つである事を保証する、デザインパターンです。

Singletonパターンが便利な時

例えば、アプリケーション全体を表すクラス ApplicationClass を作るとします。


''' <summary>
''' Singletonなクラス
''' </summary>
Class Class1

  ''' <summary>
  ''' インスタンス
  ''' </summary>
  Private Shared _Instance As Class1 = New Class1()

  ''' <summary>
  ''' インスタンスを返す
  ''' </summary>
  ''' 
  Public Shared ReadOnly Property Instance() As Class1
    Get
      ' インスタンス変数が Nothing の場合のみ、インスタンスを生成する
      If _Instance Is Nothing Then
        _Instance = New Class1()
      End If

      Return _Instance

    End Get

  End Property

  Public Property Setting1 As String = ""
  Public Function SaveSetting()

  End Function

  ' その他いろいろ・・・

End Class

使う時は、


ApplicationClass.Instance.SaveSetting()

などとします。

プログラムのどこからアクセスしても、同じインスタンスにアクセスできます。

VB.NETで Singletonパターンを使うには

Class1 というクラスが、Singletonであることを表現するとします。


''' <summary>
''' Singletonなクラス
''' </summary>
Class Class1

  ''' <summary>
  ''' インスタンス
  ''' </summary>
  Private Shared _Instance As Class1 = New Class1()

  ''' <summary>
  ''' インスタンスを返す
  ''' </summary>
  ''' 
  Public Shared ReadOnly Property Instance() As Class1
    Get
      ' インスタンス変数が Nothing の場合のみ、インスタンスを生成する
      If _Instance Is Nothing Then
        _Instance = New Class1()
      End If

      Return _Instance

    End Get
  End Property

End Class

Class1 の Private Shared 変数として、_Instance を持っておき、インスタンス(実体)へのアクセスは Instance() プロパティを用いるわけです。

Class1のインスタンスにアクセスするには、


Class1.Instance.Hoge = 1

などとします。Class1 を自分で New してはなりません。常に、Class1.Instance を通してアクセスします。

まとめ

以上、VB.NETでSingletonパターンを用いる方法、でした。

インスタンス変数を Private Shared にして、Shared Property を通してアクセスするこの方法を覚えておくと、とても役立ちますよ。

VB.NETXMLドキュメントコメントを用いるには

VB.NETで動的配列を使うには