《初級/応用編》★★★



Swing/JTree
〈GoF〉Composite を導入する ツリーの各ノードは、ファイル(末端)かフォルダー(枝)になる可能性があります。そこで〈GoF〉Composite を導入して、これらの違いを意識せずに統一して扱えるようにします。
〈GoF〉Composite を実現する Composite::Componen(Node)は、共通するプロトコルを規定します。Composite::Leaf(FileNode)は、単一オブジェクトの動作を規定します。Composite::Composite(DirNode)は、複合オブジェクトの動作を規定します。
Swing/Jython - JTree

フォルダー/ファイルの階層構造を「簡単に」閲覧できるツールがあると便利です。

DefaultMutableTreeNode - getUserObject

ツリー JTree の各ノードを選択すると、その情報がテキスト領域 JTextArea に表示されます。

〈GoF〉Iterator が必要に

OOP では「抽象化」を支援するメカニズムを利用すると、特定の実現方法に依存した「条件反復」を排除できるので、SP の定石である「for 文」によってコードが汚染されるのを防げます。

〈GoF〉Iterator を導入する

ツリーの各ノードには、イテレーターが規定してあるので、for 文を使って(その傘下にある)各ノードを参照できるようになります。

〈GoF〉Iterator を実現する
  • 特殊メソッド __iter__ を規定すると、組み込み関数 iter に呼応して、各要素を参照するイテレーターが得られます。

》作業中です《

《余録》Iterator の隘路

Java の歴史を紐解くと、コレクションに対して反復処理を行う、いくつかのイディオムが登場します。

〈GoF〉Visitor を導入する
  • ボタンによって、テキスト表示〔Text〕とツリー表示〔Tree〕を選択できます。
〈GoF〉Visitor を実現する

。また、メタプログラミングを導入すると、冗長なクラスを削除できるので、簡潔で見通しの良いコードを記述できるようになります。

〈GoF〉Command を実現する

特殊メソッド __call__ は、演算子 () に呼応する、呼び出し可能オブジェクトの動作を規定します。

》作業中です《

Last updated♪2009/07/08