ホームページ >Java >&#&チュートリアル >JAVA デコレータ パターンの要約と整理 (詳細な例)
この記事では、java に関する関連知識を提供します。主にデザイン パターンに関する関連事項を紹介します。主に、既存のオブジェクトを変更せずに、デコレータ パターンの関連内容について言及します。構造の場合、次のことができます。いくつかの責任パターンをオブジェクトに動的に追加します。
推奨学習: 「Java ビデオ チュートリアル 」
は、既存のオブジェクトの構造を変更せずに、オブジェクトに何らかの役割を動的に追加する (つまり、機能を追加する) パターンを指し、オブジェクトの構造パターンに属します。 利点
1. デコレータは継承を強力に補足するもので、継承よりも柔軟性が高く、元のオブジェクトを変更せずにオブジェクトの関数を動的に拡張できます。 -in すぐに使用可能2. 未使用の装飾クラスとこれらの装飾クラスの配置と組み合わせを使用することで、さまざまな効果を実現できますデコレータ パターンは多くのサブクラスを追加し、過度に使用するとプログラムの複雑さが増加します。3. デコレーター モードは、開閉の原則に完全に準拠します
欠点
知識ポイント通常、クラスの機能の拡張は継承を使用して実現されます。しかし、継承は静的な性質と結合度が高く、拡張機能が増えるとサブクラスも拡張していきます。合成関係を使用してラッパー オブジェクト (つまり、装飾オブジェクト) を作成し、実際のオブジェクトをラップし、実際のオブジェクトのクラス構造を変更せずに追加の機能を提供する場合、これがデコレータ パターンの目標です。その基本構造と実装方法を分析してみましょう。
デコレータ パターンの実装ケース:
Hei Xiaohu が七英雄を捕まえ、さらに紅毛を焼きました 抽象コンポーネント (コンポーネント) 役割: 七英雄 ConcreteComponent ロール: Rainbow Cat
Abstract Decorator ロール: マテリアルを追加
Concrete Decorator ロール: 塩とクミンを追加します。
Qixia
Hongmao クラスQixia インターフェイスを実装し、虹猫をローストするメソッドを実装しますpublic interface Qi { void show();}Hongmao
これは、Qixia インターフェイスを実装し、Qixia のバーベキューを呼び出すために使用される Qixia Xia 属性を宣言する抽象デコレータです。 Methodpublic class Hong implements Qi { @Override public void show() { System.out.println("烧烤一个虹猫"); }}材料を追加します
抽象クラスを継承し、バーベキュー メソッドを書き換えて Salt を追加しますpublic class JiaLiao implements Qi { private Qi qi; JiaLiao() { } JiaLiao(Qi component) { this.qi = component; } @Override public void show() { qi.show(); }}add Salt
抽象クラスを継承し、バーベキューメソッドを書き直し、cuminを追加しました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
new虹猫、焼きます。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
塩を加えます塩とクミンを加えます
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 デコレータ パターンの要約と整理 (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。