JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Strategyパターン  
メニュー
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  田中宏和
Strategyパターン
◆概要
アルゴリズムの集合を定義し、それぞれのアルゴリズムをカプセル化してそれらを交換可能にする。Strategyパターンはアルゴリズムを、それを利用するクライアントから独立に変更できるようにする
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
Strategy.java(ここからダウンロード)
abstract class Strategy {
  abstract public void algorithmInterface();
}
ConcreteStrategyA.java(ここからダウンロード)
public class ConcreteStrategyA extends Strategy {
  public ConcreteStrategyA() {
  }
  public void algorithmInterface() {
    System.out.println("ConcreteStrategyA algorithmInterface()メソッド");
  }
}
ConcreteStrategyB.java(ここからダウンロード)
public class ConcreteStrategyB extends Strategy {
  public ConcreteStrategyB() {
  }
  public void algorithmInterface() {
    System.out.println("ConcreteStrategyB algorithmInterface()メソッド");
  }
}
ConcreteStrategyC.java(ここからダウンロード)
public class ConcreteStrategyC extends Strategy {
  public ConcreteStrategyC() {
  }
  public void algorithmInterface() {
    System.out.println("ConcreteStrategyC algorithmInterface()メソッド");
  }
}
Context.java(ここからダウンロード)
public class Context {
  Strategy strategy;

  public Context(Strategy strategy) {
    this.strategy = strategy;
  }

  public void contextInterface() {

    strategy.algorithmInterface();
  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    Context a = new Context(new ConcreteStrategyA());
    a.contextInterface();

    Context b = new Context(new ConcreteStrategyB());
    b.contextInterface();

    Context c = new Context(new ConcreteStrategyC());
    c.contextInterface();
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\Strategy>javac *.java

C:\JavaHello\Strategy>java Client
ConcreteStrategyA algorithmInterface()メソッド
ConcreteStrategyB algorithmInterface()メソッド
ConcreteStrategyC algorithmInterface()メソッド

C:\JavaHello\Strategy>

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

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