generated at
コンポジットパターン
よくあるのは、ファイルシステム上の処理の話。
ファイルやディレクトリを作成したり、削除したりしたい。
ファイルはファイルで、ディレクトリはディレクトリで処理を書いて....
ロジックがごちゃごちゃになってしまう。
ファイルもディレクトリも、同一のもの(たとえば、 entity と名前付けすると)、 entity.create() , entity.delete() みたいにできれば処理コードの可視性がよくなる。
そのためには、両方をまとめたクラスみたいなものをつくって、そこでロジックをかいておく。
シンボリックファイルの処理も考えないといけない、、となったときにでも、そっちのクラスにロジックを押し込める。

処理をどうデザインするか
個別のことを知らなくても、一定の法則に従うようつくってもらって、それで処理するようにしたい?

参考:

共通の処理の部分を、componentと呼ぶ?
componentでの処理は、実際の処理対象か、どうでないかは気にしない。
人か組織を気にしない
ディレクトリかファイルか気にしない

----------------------------------------
以下は、列挙? 再帰パターン.....
これで、個別のファイルを列挙して回れるけど、
iterate.py
def foo(itr): for e in itr: if e is directory: return foo(e) else: somethingSpecial(e)
で、内部で以下のruleで対応する。
ディレクトリ(iteratable)なら、fooを呼ぶ
iterableでないなら、somethingSpecialを呼ぶ