《初級/応用編》★★★
Java.use(better, Python) # Swing
- 2007/04/02《1》コードを実行するだけなら
- 2007/04/03《2》ここだけ実行したいなら
- 2007/04/04《3》ここに表示したいなら
- 2007/04/05《4》状態を確認するために
- Java.use(better)《5》状態を確認したいなら - 続・ひよ子のきもち
》こちらに移動中です《
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 文を使って(その傘下にある)各ノードを参照できるようになります。
》作業中です《
《余録》Iterator の隘路
Java の歴史を紐解くと、コレクションに対して反復処理を行う、いくつかのイディオムが登場します。
〈GoF〉Visitor を導入する
- ボタンによって、テキスト表示〔Text〕とツリー表示〔Tree〕を選択できます。
〈GoF〉Visitor を実現する
。また、メタプログラミングを導入すると、冗長なクラスを削除できるので、簡潔で見通しの良いコードを記述できるようになります。