JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Decoratorパターン  
メニュー
Home
情報交換掲示板
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain Of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
  2003/07/25  田中宏和
Decoratorパターン
◆概要
オブジェクトに付加的な機能を動的に追加する。Decoratorパターンは継承よりも柔軟な拡張方法を提供する
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
Component.java(ここからダウンロード)
abstract class Component {
  abstract public void operation();
}
ConcreteComponent.java(ここからダウンロード)
public class ConcreteComponent extends Component {
  public void operation() {
    System.out.println("ConcreteComponent operation()メソッド");
  }
}
Decorator.java(ここからダウンロード)
abstract class Decorator extends Component {
  protected Component component;

  public void setComponent(Component component) {
    this.component = component;
  }

  public void operation() {
    if (component!=null) {
      component.operation();
    }
  }
}
ConcreteDecoratorA.java(ここからダウンロード)
public class ConcreteDecoratorA extends Decorator {
  private String addedState;

  public void operation() {
    super.operation();
    addedState = "new state";
    System.out.println("ConcreteDecoratorA operation()メソッド");
  }
}
ConcreteDecoratorB.java(ここからダウンロード)
public class ConcreteDecoratorB extends Decorator {
  public void operation() {
    super.operation();
    addedBehavior();
    System.out.println("ConcreteDecoratorB operation()メソッド");
  }
  private void addedBehavior() {

  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    ConcreteComponent c = new ConcreteComponent();
    ConcreteDecoratorA da = new ConcreteDecoratorA();
    ConcreteDecoratorB db = new ConcreteDecoratorB();

    da.setComponent(c);
    db.setComponent(da);

    db.operation();
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\Decorator>javac *.java

C:\JavaHello\Decorator>java Client
ConcreteComponent operation()メソッド
ConcreteDecoratorA operation()メソッド
ConcreteDecoratorB operation()メソッド

C:\JavaHello\Decorator>

おおおお!実行できましたね!

 
 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME