Java のデコレーター
Decorator デザイン パターンを使用すると、ユーザーは機能を動的に追加し、オブジェクトの動作に影響を与えることなくオブジェクトの動作を設定できます。 クラスの動作を拡張するために、デコレーターは主に継承を使用します。
この記事では、Java の Decorator デザイン パターンについて説明します。 また、トピックをより簡単にするために、例と説明を使用してトピックをカバーします。
Java の Decorator デザイン パターンに関する特記事項
以下に、Decorator デザイン パターンに関するいくつかの重要な注意事項を示します。
- Decorator デザイン パターンを使用すると、クラスの実際の構造を変更することなく、クラスのオブジェクトに機能を追加できます。
- Decorator デザイン パターンは、抽象クラスまたはインターフェイスを使用します。
- 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 をインストールする必要があります。
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