VDMで学ぶデザインパターン。最初はSingleton。以前、MVCパターンでフレームワークを書いた時に、モデル部分のデータ保持に使った。
まずは、Singletonのクラス。
class Singleton instance variables private static ins : Singleton := new Singleton(); operations private Singleton : () ==> Singleton Singleton() == skip; public static getInstance : () ==> Singleton getInstance() == return ins; public test : () ==> nat test() == return 1; end Singleton
これを使うクラスは以下の通り。
class A operations public t : () ==> nat t() == let i = Singleton`getInstance() in return i.test(); end A
上記2つのクラスをVDMToolsで動作させるには、VDMToolsのインタープリタで以下のコマンドを入力してください。
>> init >> print new A().t()
上記の記述、一見問題なさそうに見えるけど、最新のVDMTools v8.2では正常に動作しない。これは、VDMToolsのインスタンスの扱いに問題があるため。v8.2で動作させるためには、Singletonクラスのコンストラクタを削除すれば大丈夫。そうすると、厳密にはSingletonではなくなるけど、運用でカバーって感じになります。
で、この問題、いま開発中のVDMTools最新版では修正されてますので、次バージョンのリリースまでは、コンストラクタを削除して使ってみてください。
0 コメント:
コメントを投稿