プログラミング初心者でJavaでIteratorについて学んだのですが、

・Iteratorには大まかに二つ役割があって、それはIteratorクラスとAggregateクラスの二つなのですが、実際にJavaで提供されているAPIはIteratorがjava.util.Iteratorクラス(Enumerationというのもありました)、AggregateがArrayListやMap、Setなどのことだと考えていいのですか?

・デザインパターンの本を読んでいるとMainクラスを作る人とそれ以外のクラス(デザインパターンで作るクラス群)を作る人は別の人だと考えていいのですか?(つまり前者は仕様を読んでAPIを利用する側) 

いまいち理解が曖昧で確証が持てなくてもやもやしています。
どなたか御回答お願いします。