ホームページ >Java >&#&チュートリアル >JAVA デコレータ パターンの要約と整理 (詳細な例)

JAVA デコレータ パターンの要約と整理 (詳細な例)

WBOY
WBOY転載
2022-05-05 18:48:192441ブラウズ

この記事では、java に関する関連知識を提供します。主にデザイン パターンに関する関連事項を紹介します。主に、既存のオブジェクトを変更せずに、デコレータ パターンの関連内容について言及します。構造の場合、次のことができます。いくつかの責任パターンをオブジェクトに動的に追加します。

JAVA デコレータ パターンの要約と整理 (詳細な例)

推奨学習: 「

Java ビデオ チュートリアル

デコレータ パターンとは

##Decorator パターンの定義:

は、既存のオブジェクトの構造を変更せずに、オブジェクトに何らかの役割を動的に追加する (つまり、機能を追加する) パターンを指し、オブジェクトの構造パターンに属します。 利点

1. デコレータは継承を強力に補足するもので、継承よりも柔軟性が高く、元のオブジェクトを変更せずにオブジェクトの関数を動的に拡張できます。 -in すぐに使用可能
2. 未使用の装飾クラスとこれらの装飾クラスの配置と組み合わせを使用することで、さまざまな効果を実現できます

3. デコレーター モードは、開閉の原則に完全に準拠します

欠点

デコレータ パターンは多くのサブクラスを追加し、過度に使用するとプログラムの複雑さが増加します。

知識ポイント

通常、クラスの機能の拡張は継承を使用して実現されます。しかし、継承は静的な性質と結合度が高く、拡張機能が増えるとサブクラスも拡張していきます。合成関係を使用してラッパー オブジェクト (つまり、装飾オブジェクト) を作成し、実際のオブジェクトをラップし、実際のオブジェクトのクラス構造を変更せずに追加の機能を提供する場合、これがデコレータ パターンの目標です。その基本構造と実装方法を分析してみましょう。

デコレータ パターンの実装

ケース:

Hei Xiaohu が七英雄を捕まえ、さらに紅毛を焼きました 抽象コンポーネント (コンポーネント) 役割: 七英雄 ConcreteComponent ロール: Rainbow Cat
Abstract Decorator ロール: マテリアルを追加
Concrete Decorator ロール: 塩とクミンを追加します。

Qixia

Qixia インターフェイスはバーベキュー抽象メソッドを宣言します

public interface Qi {
    void show();}
Hongmao

Hongmao クラスQixia インターフェイスを実装し、虹猫をローストするメソッドを実装します

public class Hong implements Qi {

    @Override
    public void show() {
        System.out.println("烧烤一个虹猫");
    }}
材料を追加します

これは、Qixia インターフェイスを実装し、Qixia のバーベキューを呼び出すために使用される Qixia Xia 属性を宣言する抽象デコレータです。 Method

public class JiaLiao implements Qi {
    private Qi qi;

    JiaLiao() {
    }

    JiaLiao(Qi component) {
        this.qi = component;
    }

    @Override
    public void show() {
        qi.show();

    }}
add Salt

抽象クラスを継承し、バーベキュー メソッドを書き換えて Salt を追加します

public class Yan extends JiaLiao {
    private Qi qi;

    Yan() {
    }

    Yan(Qi qi) {
        super(qi);
    }

    @Override
    public void show() {
        super.show();
        add();
    }

    public void add() {
        System.out.println("加盐");
    }}
Add Cumin

抽象クラスを継承し、バーベキューメソッドを書き直し、cuminを追加しました

public class ZiRan extends JiaLiao {
    private Qi qi;

    ZiRan() {
    }

    ZiRan(Qi qi) {
        super(qi);
    }

    @Override
    public void show() {
        super.show();
        add();
    }

    public void add() {
        System.out.println("加孜然");
    }}
Test

new虹猫、焼きます。
塩を加えます

塩とクミンを加えます

public class Demo {
    public static void main(String[] args) {
        Qi qi = new Hong();
        qi.show();
        System.out.println();
        Qi qi1 = new Yan(qi);
        qi1.show();
        System.out.println();
        Qi qi2 = new ZiRan(qi1);
        qi2.show();
    }}

JAVA デコレータ パターンの要約と整理 (詳細な例)概要

虹猫をグリルできるだけではありません他の七英雄については、クラスを追加するだけで七英雄インターフェースを実装できます。
また、塩やクミンを加えてもホンマオ本来の肉質は変わりません。


推奨学習: 「
Java ビデオ チュートリアル

以上がJAVA デコレータ パターンの要約と整理 (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。