9.2.2.4. 挿入を使用して実装を拡張

概要

挿入を使用して、既存のコードの機能を追加または変更できます。この例は、既存のクラスに翻訳機能を追加する方法を示しています。翻訳機能は想像上の機能であり、例での実装方法は擬似コードであり、説明を目的としています。

この例では、メソッド buildPhrase を持つ Welcome クラスがすでにあることを前提とします。buildPhrase メソッドは、都市の名前を引数として取得し、"Welcome to Boston." などのフレーズを出力します。ここでの目標は、このような挨拶を別の言語に翻訳できる Welcome クラスのバージョンを作成することです。

例9.2 Translator Bean を Welcome クラスに挿入する

以下の擬似コードは、想像上の Translator オブジェクトを Welcome クラスに挿入します。Translator オブジェクトは、文をある言語から別の言語に翻訳できる EJB ステートレス Bean または別のタイプの Bean になります。この例では、挨拶全体を翻訳するために Translator が使用されます。元の Welcome クラスは実際にはまったく変更されません。Translator は、buildPhrase メソッドが実装される前に挿入されます。
以下のコード例は、サンプル Translating Welcome クラスです。
public class TranslatingWelcome extends Welcome {

    @Inject Translator translator;

    public String buildPhrase(String city) {
        return translator.translate("Welcome to " + city + "!");
    }
    ...
}