Java でのデリゲート

MD Aminul Islam 2023年10月12日
Java でのデリゲート

Java などのプログラミング言語を使用している場合は、継承に精通している可能性があります。 しかし、継承の代わりに 委譲 があります。

Delegation を介して、別のクラスのオブジェクトをインスタンス変数として使用できます。 スーパークラスから不要なメソッドを受け入れる必要がないため、いくつかの点で継承よりも優れています。

また、インスタンスは既知のクラスです。 委譲 を、あるオブジェクトがメソッド呼び出しを別のオブジェクトに転送できるオブジェクト間の関係作成者と呼びます。

Delegation は実行時の柔軟性を提供します。 しかし、問題は、ほとんどの一般的なプログラミング言語が Delegation をサポートしていないことです。

この記事では、Java での Delegation の使用について見ていきます。 また、トピックをより簡単にするために適切な説明を含む例を使用して、トピックについて説明します。

Java での委任

以下では、Delegation の簡単な例を見て、部分ごとに説明します。

class MainPrinter { // The class that hold the actual PrintData() method
  void PrintData() {
    System.out.println("This is the Delegate.");
  }
}

class MyPrinter { // The class that calls PrintData() method from the object of class MainPrinter
  MainPrinter p = new MainPrinter(); // Creating an object for MainPrinter class.
  void PrintData() {
    p.PrintData(); // Calling the method from MainPrinter class object.
  }
}

class TestDelegate {
  public static void main(String[] args) {
    MyPrinter printer = new MyPrinter(); // Creating an object for MyPrinter class.
    printer.PrintData(); // Calling the method from MyPrinter class object.
  }
}

上記では、委任 を示す例を共有しました。 コードの各行の目的については既に説明しました。

上記の例では、MainPrinterMyPrinter、および TestDelegate という名前の 3つの異なるクラスを作成しました。クラス MainPrinter には、データを印刷する実際のメソッドが含まれています。

また、クラス MyPrinter には、主に MainPrinter という名前の別のクラスから別のメソッドを呼び出す printData() メソッドも含まれています。

しかし、TestDelegate という名前のハンドラー クラスを見ると、MyPrinter クラスからオブジェクトを作成したことがわかります。ここで、MyPrinter クラスには実際の printData() メソッドがありません。

上記のサンプル コードを実行すると、次のような出力が得られます。

This is the Delegate.

ここで共有されているコード例は Java であり、システムに Java が含まれていない場合は、環境に Java をインストールする必要があることに注意してください。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn