コンポジットパターン
よくあるのは、ファイルシステム上の処理の話。
ファイルやディレクトリを作成したり、削除したりしたい。
ファイルはファイルで、ディレクトリはディレクトリで処理を書いて....
ロジックがごちゃごちゃになってしまう。
ファイルもディレクトリも、同一のもの(たとえば、entityと名前付けすると)、entity.create(), entity.delete() みたいにできれば処理コードの可視性がよくなる。
そのためには、両方をまとめたクラスみたいなものをつくって、そこでロジックをかいておく。
シンボリックファイルの処理も考えないといけない、、となったときにでも、そっちのクラスにロジックを押し込める。
処理をどうデザインするか
個別のことを知らなくても、一定の法則に従うようつくってもらって、それで処理するようにしたい?
参考:
共通の処理の部分を、componentと呼ぶ?
componentでの処理は、実際の処理対象か、どうでないかは気にしない。
人か組織を気にしない
ディレクトリかファイルか気にしない
----------------------------------------
以下は、列挙? 再帰パターン.....
これで、個別のファイルを列挙して回れるけど、
code: iterate.py
def foo(itr):
for e in itr:
if e is directory:
return foo(e)
else:
somethingSpecial(e)
で、内部で以下のruleで対応する。
ディレクトリ(iteratable)なら、fooを呼ぶ
iterableでないなら、somethingSpecialを呼ぶ