JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Builderパターン  
メニュー
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  田中宏和
Builderパターン
◆概要
複合オブジェクトについて、その作成過程を表現形式に依存しないものにすることにより、同じ作成過程で異なる表現形式のオブジェクトを生成できるようにする
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
Product.java(ここからダウンロード)
import java.util.*;

public class Product {
  ArrayList parts = new ArrayList();

  public void addPart(String part) {
    parts.add(part);
  }

  public void show() {
    Iterator iterator = parts.iterator();
    while (iterator.hasNext()) {
      System.out.println(iterator.next());
    }
  }
}
Builder.java(ここからダウンロード)
abstract class Builder {
  abstract public void buildPartA();
  abstract public void buildPartB();
  abstract public Product getResult();
}
ConcreteBuilder1.java(ここからダウンロード)
public class ConcreteBuilder1 extends Builder {
  Product product;

  public void buildPartA() {
    product = new Product();
    product.addPart("partA");
  }

  public void buildPartB() {
    product.addPart("partB");
  }

  public Product getResult() {
    return product;
  }
}
ConcreteBuilder2.java(ここからダウンロード)
public class ConcreteBuilder2 extends Builder {
  Product product;

  public void buildPartA() {
    product = new Product();
    product.addPart("partH");
  }

  public void buildPartB() {
    product.addPart("partI");
  }

  public Product getResult() {
    return product;
  }
}
Director.java(ここからダウンロード)
public class Director {
  public void constract(Builder builder) {
    builder.buildPartA();
    builder.buildPartB();
  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    Director director = new Director();

    Builder b1 = new ConcreteBuilder1();
    Builder b2 = new ConcreteBuilder2();

    director.constract(b1);
    Product p1 = b1.getResult();
    p1.show();

    director.constract(b2);
    Product p2 = b2.getResult();
    p2.show();
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\Builder>javac *.java

C:\JavaHello\Builder>java Client
partA
partB
partH
partI

C:\JavaHello\Factory Method>

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

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