デコレーターパターンにより、構造を変更せずに新しい機能を既存のオブジェクトに追加できます。このタイプのデザインパターンは、既存のクラスのパッケージである構造パターンに属します。
このパターンは、元のクラスをラップする装飾クラスを作成し、クラスメソッドの署名の整合性を維持しながら、追加の機能を提供します。
次の例を使用して、デコレーターモードの使用を実証します。その中で、形状のクラスを変更せずに、さまざまな色の形状を飾ります。
成し遂げる
Shape Interfaceと、Shapeインターフェイスを実装するエンティティクラスを作成します。次に、形状インターフェイスを実装し、Shapeオブジェクトをインスタンス変数として使用する抽象的な装飾クラスの形状装飾を作成します。
RedshapedeCoratorは、ShapedeCoratorを実装するエンティティクラスです。
デモクラスであるDedoratorPatterndemoは、RedshapedeCoratorを使用して形状オブジェクトを飾ります。
ステップ1
インターフェイスを作成します。
shape.java
パブリックインターフェイスシェイプ{void draw();}ステップ2
インターフェイスを実装するエンティティクラスを作成します。
rectangle.java
パブリッククラスの長方形はshape {@override public void draw(){system.out.println( "shape:rectangle"); }} circle.javapublic class circleはshape {@override public void draw(){system.out.println( "shape:circle"); }}ステップ3
形状インターフェイスを実装する抽象的な装飾クラスを作成します。
shapedecorator.java
パブリックアブストラクトクラスの形状装置は、形状{保護された形状の装飾された形を実装しています。 public shapedecorator(形状の装飾の形){this.decoratedshape = decoratedshape; } public void draw(){decoratedshape.draw(); }}ステップ4
ShapedeCoratorクラスから拡張されるエンティティの装飾クラスを作成します。
redshapedecorator.java
Public Class RedshapedeCoratorは、ShapedeCoratorを拡張します{public Redshapedecorator(Shape Decoratedshape){super(decoratedshape); } @Override public void draw(){decoratedshape.draw(); SetredBorder(装飾されたシャープ); } private void setredBorder(Shape Decoratedshape){System.out.println( "Border Color:Red"); }}ステップ5
RedshapedeCoratorを使用して、形状オブジェクトを飾ります。
DecoratorPatterndemo.java
public class decoratorpatterndemo {public static void main(string [] args){shape circle = new Circle(); shape redcircle = new RedshapedeCorator(new Circle()); shape redrectangle = new RedshapedeCorator(new Rectangle()); System.out.println( "通常のボーダー付きサークル"); circle.draw(); System.out.println( "/ncircle of Red Border"); redcircle.draw(); System.out.println( "/nrectangle of Red Border"); RedRectangle.draw(); }}ステップ6
出力を確認します。
通常の境界線のある円:赤いボーダーシャーペの円丸:サークルボーダーカラー:赤い境界線のredrectangle:rectangleborder色:赤
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!