Python 弾丸ツアー #DP: ツリー ... step 1: Composite を導入する

OOPデザインパターンリファクタリング

Python.use(better); Python 弾丸ツアー #DP: Tkinter/Python
>>> ツリー(階層構造)
step 1: Composite を導入する
《Python3.1|Jython2.5|IronPython2.6》

《著》小粒ちゃん@湘南組《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/23 ● 第4版♪2010/03/08

step 1: Composite を導入する

《課題》指定したフォルダーを頂点とするツリーを表示したい。


《テストケース》次のコードを実行すると、新たなウィンドウが現れ、指定したフォルダーを頂点とするツリー(フォルダー/ファイルの階層構造)を表示します。ただし、指定したフォルダーは表示されません。

《補足》本書では、ディレクトリーをフォルダーの同義語とみなして「フォルダー」に統一します。□

$ python -i sp1_Composite.py
>>> do(0)
>>> # -------------------------------------------------- tips


《TIPS》Composite パターン:登場人物の相関図

 ̄単体オブジェクトと複合オブジェクトに共通する視座を提供します。すると、これらの違いを捨象して、一様に扱えるようになるので、分割統治の原則に沿って、共通する特徴を基軸に据えながら、その状況ごとに異なる戦略を選択できます。



  • Component
  • Leaf:単体オブジェクト
    • 単一のノードを構成して、末端に位置する各ノード(葉)を実現します。
  • Composite:複合オブジェクト
    • 複数のノードによって構成されて、中間に位置する各ノード(枝)を実現します。
  • Client
    • Component を利用するアプリケーションを規定します。

さらに、次のような結果を出力します。

>>> # -------------------------------------------------- tips
Composite(#Tools: [Composite(#Doc: [Composite(#HelpIndexingTool: [#'__init__.py',#'Help_Indexing_Tool_Suite.py',#'Miscellaneous_Standards.py',#'odds_and_ends.py',#'Required_Suite.py',#'Standard_Suite.py']),#'README',#'setup.py']),#'fixapplepython23.py',#'pythonw.c'])
>>> 
■ キーワード

 ̄Component・Composite・Leaf・ツリー・ファイル・フォルダー・階層構造・Tkinter

TOP
》作業中です《