デザインパターンの一つに、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 を通してアクセスするこの方法を覚えておくと、とても役立ちますよ。