インタフェースこのアーカイブは同期化されません。日記が更新されても、このアーカイブには反映されません。昨日のコードを再掲しよう。hander();クラスを利用するための初期化は個別に行い、それを利用するタイミングをデリゲートを用いて統一した。変数に記憶しておき、後で呼び出すことができることだ。静的メソッド・インスタンスメソッドを問わずにまったく同じように扱うことができるのも強みである。デリゲートを経由で呼び出す実装側ににはメソッドのシグネチャ以上の制約を課す必要がないため、クラスの状態変更通知などを他のクラスに送るための、イベント・リスナーの仕組みで利用されることが多い。デリゲート型の登録や、デリゲート変数の作成など、その利用にある程度の手間がかかるのは事実である。中でやることは決まっている。そのため、デリゲートを使う方法は少し大掛かり過ぎるのだ。いった場合、デリゲートよりもシンプルな方法がある。それは、「インタフェース」だ。つに対する参照を持つならば、インタフェースは、複数のメソッドに対する参照を持つ。特定のシグネチャを持つメソッド(複数の場合もある)を実装することを要求するのだ。デリゲート型変数を経由してメソッドを呼び出せるのと同様、インタフェース型変数を経由して、インタフェースに規定されているメソッドを呼び出せる。インタフェースはデリゲートと違い、クラス側が、インタフェースを実装していることを、クラス定義に明示する必要がある。インタフェースは「契約」であるため、インタフェースが規定しているメソッドを、クラス側が「全て」実装する必要がある。インタフェースだが、これらは、シェル側が要求している契約である。インタフェースを作っている。実装するための契約なのだ。ショートカット用のインタフェース型を作ってみよう。「リンク先を文字列として取得できる」ということだ。これをインタフェースとして定義するとこうなる。