追記:一つのAggregateに複数のIterator

AggregateとIteratorが分かれていることで複数のIteratorを作れるようであるが、
iterator()のインターフェースが決まっているので、
どっちをもらうか選択は出来ないだろう。
しかしまぁ、どっちがきても問題にならないようにIteratorのインターフェースを
決めているのであるが、
ConcreteAggregateの中の状態に応じてIteratorを切り替えたいとしても、
そのようなことをするのに複数用意する必要があるのかはやや疑問である。
IteratorとAggregateが分かれていることにより、さらにもう一つ、
ConcreateAggregateがConcreateIteratorの実装から独立するというのが
あるようであるが、もともと依存性の高いものなので
独立させる必要は無いような(…たぶん?)