適用事例: Composite パターン

古典的な〈GoF〉Composite パターンに代えて、木構造を持つオブジェクトの集合体を管理したいときに、既存のコントロールを活用した事例を紹介します。すると、複合/単一オブジェクトの違いを意識せずに、オブジェクトの集合体を一様に扱えるようになります。
再び、パターンの復習から始めます。古典的な Composite パターンに代えて、TreeView を導入したのが、exComposite.py です。


>ipy.exe exComposite.py

アプリケーションを起動すると(左)ウィンドウが現れます。1)ボタン〔Open...〕をクリックすると、次のようなダイアログが現れます。



任意のファイルを選択すると(右)選択したファイルを含むフォルダーの木構造がビューに表示されます。



ここでは、選択したファイル CompiledModule.cs を含むフォルダー Compiler を頂点とする、木構造が得られます。(左)任意のフォルダーをクリックすると、その傘下にあるファイルサイズの合計が表示されます。(右)任意のファイルをクリックすると、そのファイルサイズが表示されます。たとえば、フォルダー AST の傘下にあるファイルの合計が 237712 バイトであり、ファイル CompiledModule.cs のサイズが 4887 バイトであるのが分かります。