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

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

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

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

step 2: Iterator を導入する

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


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

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

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

 ̄複合オブジェクトの実現方法には依存せずに、それを構成する各要素にアクセスできます。組み込みの構文(for 文など)を利用した、統一的な表現を可能にします。



  • Iterator
    • 任意の要素を順にアクセスする手段を規定します。
  • ConcreteIterator
    • Iterator で規定したプロトコルを実現します。Aggregate を構成する要素(未処理)を記憶します。
  • Aggregate
    • Iterator を生成する手段を規定します。
  • ConcreteAggregate

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

---------------------------------------- print(tips.tree)
Tools
Doc
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
---------------------------------------- tips.tree.print()
Tools
+  Doc
+  +  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
>>> 

TOP
》作業中です《