
you are here
303
8
章
Template Method
パターン
ソートしたいカモの配列
ソートすべきカモがいる
compareTo()
メソッドは
2
つのオブジェクトを比較し、どちらが小さいか、大きいか、または同じ
であるかを返します。
sort()
は、このメソッドを配列内のオブジェクト比較の基準として使います。
ソートしたいカモの配列があるとします。どのように行えばよいでしょ
うか?
Arrays
クラスの
sort()
テンプレートメソッドがアルゴリズムを提供
していますが、このメソッドにカモの比較方法を通知する必要があるの
で、
compareTo()
メソッドを実装して通知します。理解できましたか?
いい指摘です。
sort()
の設計者はすべての配列でこのメソッドを使えるように
したかったので、
sort()
をどこからでも使えるスタティックメソッドにする必要
がありました。しかし、それは問題ではなく、
sort()
はスーパークラスにある場
合とほとんど同じ働きをします。さらに細かいことですが、
sort()
は実際にはスー
パークラスで定義されていないので、
sort()
メソッドは
compareTo()
メソッドを実
装したことを知る必要があります。さもないと、ソートアルゴリズムを実現する
のに必要な要素が足りないことになります。
そのために、設計者は
Comparable
インタフェースを利用しました。みなさん
は、(驚くべきことに)
compareTo()
というメソッドだけを持つこのインタフェー
スを実装するだけでよいのです。 ...