018-002-007

委譲パターン:機能の再利用

上級

問題説明

委譲パターン:機能の再利用

この問題では: PrinterクラスのインスタンスをColorPrinterクラスのフィールドとして保持し、印刷処理を委譲することで機能を再利用するプログラムを作成します。

学習目標: 委譲パターンを理解し、継承ではなく委譲で機能を再利用できるようになる

概要

委譲(Delegation)は、あるオブジェクトが別のオブジェクトに処理を任せるパターンです。継承の「is-a」関係ではなく、「has-a」関係で機能を再利用します。

仕様

プリンターシステムを実装してください:

  1. Printerクラス:

    • void print(String text) - テキストを印刷("Printing: [text]"と出力)
  2. ColorPrinterクラス:

    • Printerのインスタンスをprivateフィールドとして持つ(委譲)
    • コンストラクタPrinterインスタンスを受け取る
    • void printInColor(String text, String color) - カラー情報を追加して委譲
      • "Color: [color]"を出力
      • printer.print(text)で実際の印刷を委譲
  3. Mainクラス:

    • Printerインスタンスを作成
    • それを使ってColorPrinterインスタンスを作成
    • "Hello World"を"Red"で印刷

出力形式

Color: Red
Printing: Hello World

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録