目次|前|次 |
稼動中のJava仮想マシンにプラグインを追加できるようにするには、そのプラグインをJavaバイトコード・ファイル(.クラス・ファイル)にコンパイルしておかなければなりません。このクラス・ファイルには、APIによって定義されているさまざまなクラスのサブクラスのコードが入ります。たとえば、イメージを読み込む機能を提供するプラグインには、APIによって定義されたjavax.imageio.ImageReader
というabstractクラスの新しいサブクラスが含まれています。クラス名の一意性を保証するには、インターネットのドメイン名を逆にして使うという慣例を採用できます。
プラグイン全体をロードしてインスタンス生成すると負荷が掛かり過ぎることがあるので、そのプラグインについての情報を提供するため、付加的なクラスを「代役」として使用します。このクラスは、たとえば、プラグインを実際にインスタンス生成する前に、そのプラグインによって処理できるファイル形式を判別するために使用できます。
この「代役」オブジェクトは軽量なので、Java仮想マシンの1回の起動の範囲内でこのAPIが使用されるたびにロードしてインスタンスを1つ生成しても負荷が掛かり過ぎません。利用可能なサービスについての情報を提供するために小さいクラスを利用するというこのパターンを、「サービス・プロバイダ・インタフェース」といいます。