質問: オブジェクト指向の勉強の一環としてGofのデザインパターンを C#でサンプルプログラミング中です。 その中で、Iteratorパターン(並び替え)がありますが、 Iteratorパターンと.NetにあるListやGeneric機能の違いが分かりません。 ListにもGeericにもSortメソッドや、Indexからピンポイントでの値取得も可能です。 何か考え違いしていますでしょうか。 また、もっとIteratorパターンにはもっと大きなメリットがあるのでしょうか。 宜しくお願いします。
回答: デザインパターンは、何らかの処理やデータ構造などを設計するときの「典型例」に名前を付けたものなので、実際にC#などのクラスライブラリに実装されているクラスとの機能の違いを比較することは、あまり意味がありません。 なかなか説明するのは難しいのですが、デザインパターンは、GoFたちが「こういう処理をするにはこういう設計にすればなんとなく良さそうな感じだよね」というものをサンプルコード付きでまとめたものです。一方のC#のクラスライブラリは、マイクロソフトが「こういう処理をするにはこのクラスが必要だ」と考えて作ったものです。 つまり、両者は目的も考え方も違います。同じように見えるのは、最初に書いたようにIteratorパターンが「典型例」だからです。 > > もっとIteratorパターンにはもっと大きなメリットがあるのでしょうか。 > > > ないです。あまり深く考えてはいけません。自分がC#で何か作ろうとして、それがListやGenericでできることであればそれを使えば良いです。もしListやGenericできないことなら、Iteratorパターンは、おそらく参考にはなりません。 とはいえ、ある処理をどう設計/実装するかの勉強には良い教材だと思います。Listクラスは中身を見ることができないので、Iteratorパターンの方は「設計の勉強になる」という点がメリットかもしれません。