HOWTO · Java

Java のデコレーター

このチュートリアルでは、Java のデコレーターについて説明します。

Decorator デザイン パターンを使用すると、ユーザーは機能を動的に追加し、オブジェクトの動作に影響を与えることなくオブジェクトの動作を設定できます。 クラスの動作を拡張するために、デコレーターは主に継承を使用します。

この記事では、Java の Decorator デザイン パターンについて説明します。 また、トピックをより簡単にするために、例と説明を使用してトピックをカバーします。

Java の Decorator デザイン パターンに関する特記事項

以下に、Decorator デザイン パターンに関するいくつかの重要な注意事項を示します。

  1. Decorator デザイン パターンを使用すると、クラスの実際の構造を変更することなく、クラスのオブジェクトに機能を追加できます。
  2. Decorator デザイン パターンは、抽象クラスまたはインターフェイスを使用します。
  3. Decorator デザイン パターンの欠点の 1つは、いくつかの類似したオブジェクトを使用することです。

Java でのデコレータ デザイン パターンの例

以下では、Decorator デザイン パターンに関する例を共有しました。 まず、実装しようとしている構造を見てください。

Draw
|----- Circle
|      |------ Blue Circle
|      |------ Yellow Circle
|
|----- Rectangle

上記の構造を実装する次のコードを見てください。

interface draw { // An draw interface
  void draw();
}

class Circle implements draw { // The circle class implements the interface draw
  @Override
  public void draw() {
    System.out.println("This is a circle");
  }
}

class Rectangle implements draw { // The rectangle class implements the interface draw

  @Override public void draw() { // Overriding the method for drawing rectangle
    System.out.println("This is a Rectangle");
  }
}

class ColoredCircle extends Circle { // The ColoredCircle class extents Circle
  String color;

  @Override public void draw() { // Overriding the method for drawing circle with color
    System.out.println("This is a " + color + " circle");
  }
}

// Our main controlling class
class JavaDecorator {
  public static void main(String[] args) {
    Rectangle rect = new Rectangle();
    Circle cr = new Circle();
    ColoredCircle colorCircle = new ColoredCircle();

    rect.draw();
    cr.draw();

    colorCircle.color = "Blue";
    colorCircle.draw();
    colorCircle.color = "Yellow";
    colorCircle.draw();
  }
}

各行の目的を命じました。 サンプルコードを実行すると、以下の出力が表示されます。

This is a Rectangle
This is a circle
This is a Blue circle
This is a Yellow circle

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