はじめに
VBAでクラスモジュールを作ることが少ないからか資料があまり見つからなかったので、勉強がてらデザインパターンを無理やりVBAに適用してみました。
デザインパターンを利用するには制約の多いVBAですが、少しでも綺麗なコードになるように積極的に取り入れていこうと思います。
Singleton(シングルトン)パターンとは
■Singleton(シングルトン)パターン
あるクラスのインスタンスが、プログラム内に1つしかないことを保証したいケースがあります。それを実現するために、全てのメンバーに「インスタンスを生成するなよ!」と注意をうながし、厳密にレビューをするということはあまり現実的ではないですよね。そんなとき、効果があるのがSingletonパターンです。
5分で分かるJavaデザインパターン
ということで、サンプルで記載されていた以下のクラスを自分なりにVBAに置き換えてみました。
Javaサンプルコード
public class Moon{
private static Moon moon = new Moon();
private Moon(){}
public static Moon getInstance(){
return moon;
}
}
VBA適用例
Private cFSO As Object
Private Sub Class_Initialize()
Set cFSO = CreateObject("Scripting.FileSystemObject")
End Sub
Private Sub Class_Terminate()
Set cFSO = Nothing
End Sub
Public Property Get GetFSO() As Object
Set GetFSO = cFSO
End Property
Public Function Sample(ByVal url As String) As String
With New FSO_Class
Sample = .GetFSO.GetAbsolutePathName(url)
End With
End Function
上のサンプルではあまりメリットが感じられないような…
Dictionaryとかで利用すると恩恵がありそうですが、
もはや他のパターンになっていきそうなのでこのくらいにしておきます。
まとめ
VBAで適用するとコードがちょっとスッキリします。
ただ、適用するインスタンスは考えないと変数への格納だけでいいじゃん…となってしましそうです。
ぼんやりとIEの操作や外部ブックの呼び出しとかで適用すると良さそうな感じがしました。
最後に
独学で基礎すっ飛ばしてプログラミングしているため、間違いや勘違いしているかもしれませんが、温かい目で見ていただけると幸いです。
そのときは、コメントでご指摘いただければ修正しますので、
ご支援よろしくお願いします。