JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Factory Methodパターン  
メニュー
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  田中宏和
Factory Methodパターン
◆概要
オブジェクトを作成するときのインターフェースだけを規定して、実際にどのクラスをインスタンス化するかはサブクラスが決定するようにする。
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
Product.java(ここからダウンロード)
abstract public class Product {
  abstract public String getName();
}
ConcreteProductA.java(ここからダウンロード)
public class ConcreteProductA extends Product{
  public String getName() {
    return "ProductA";
  }
}
ConcreteProductB.java(ここからダウンロード)
public class ConcreteProductB extends Product {
  public String getName() {
    return "ProductB";
  }
}
Creator.java(ここからダウンロード)
abstract public class Creator {
  abstract public Product factoryMethod();
  public void anOperation() {
    Product p = this.factoryMethod();
    System.out.println(p.getName() + "を生成しました");
  }
}
ConcreteCreatorA.java(ここからダウンロード)
public class ConcreteCreatorA extends Creator {
  public Product factoryMethod() {
    return new ConcreteProductA();
  }
}
ConcreteCreatorB.java(ここからダウンロード)
public class ConcreteCreatorB extends Creator {
  public Product factoryMethod() {
    return new ConcreteProductB();
  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    Creator a = new ConcreteCreatorA();
    a.anOperation();

    Creator b = new ConcreteCreatorB();
    b.anOperation();
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\Factory Method>javac *.java

C:\JavaHello\Factory Method>java Client
ProductAを生成しました
ProductBを生成しました

C:\JavaHello\Factory Method>

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

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