Builder_パターン
[Wikipedia|▼Menu]

Builder パターン(ビルダー・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。オブジェクトの生成過程を抽象化することによって、動的なオブジェクトの生成を可能にする。
クラス図

Builder パターンのクラス図を以下に挙げる。
利用例

Java による利用例を以下に挙げる。このソースコードは Java SE 5(J2SE 5.0) 以降のバージョンで動作する。 enum Material{WOOD, CLAY, CONCRETE, SNOW} class Building{ private Material base; private Material frame; private Material wall; void setBase(Material m){ this.base = m; } void setFrame(Material m){ this.frame = m; } void setWall(Material m){ this.wall = m; } public String toString(){ return "[Base:" + this.base + ", Frame:" + this.frame + ", Wall:" + this.wall + "]"; } } interface Builder{ void buildBase(); void buildFrame(); void buildWall(); Building getResult(); } class JapaneseHouseBuilder implements Builder{ private Building building; JapaneseHouseBuilder(){ this.building = new Building(); } public void buildBase(){ this.building.setBase(Material.CONCRETE); } public void buildFrame(){ this.building.setFrame(Material.WOOD); } public void buildWall(){ this.building.setWall(Material.CLAY); } public Building getResult(){ return this.building; } } class KamakuraBuilder implements Builder{ private Building building; KamakuraBuilder(){ this.building = new Building(); } public void buildBase(){ this.building.setBase(Material.SNOW); } public void buildFrame(){ this.building.setFrame(Material.SNOW); } public void buildWall(){ this.building.setWall(Material.SNOW); } public Building getResult(){ return this.building; } } class Director{ private Builder builder; Director(Builder builder){ this.builder = builder; } Building construct(){ this.builder.buildBase(); this.builder.buildFrame(); this.builder.buildWall(); return this.builder.getResult(); } } public class BuilderTest{ public static void main(String[] argv){ Director d1 = new Director(new JapaneseHouseBuilder()); Director d2 = new Director(new KamakuraBuilder()); Building b1 = d1.construct(); Building b2 = d2.construct(); System.out.println(b1); System.out.println(b2); } }

このソースコードは、以下の結果を出力する。[Base:CONCRETE, Frame:WOOD, Wall:CLAY][Base:SNOW, Frame:SNOW, Wall:SNOW]

Director (監督) の管理の元、それぞれのBuilder (大工) が異なるBuilding (生成物) インスタンスを生成しているのが分かる。
関係するパターン
Strategy パターン
Builder を Strategy パターンにおける Context として設計することにより、インスタンスの生成過程をより柔軟にすることができる。
Composite パターン
Composite のような複雑な構造を持つインスタンスは、Builder パターンを応用することによって効率的に生成することができる。
関連項目

デザインパターン










デザインパターン
GoFによる23種のパターン

生成に関するパターン

Abstract factory

Builder

Factory method

Prototype

Singleton

構造に関するパターン

Adapter

Bridge

Composite

Decorator

Facade

Flyweight

Proxy

振る舞いに関するパターン

Chain of responsibility

Command

Interpreter

Iterator

Mediator

Memento

Observer

State

Strategy

Template method

Visitor


並行性に関するパターン

Active object(英語版)

Balking(英語版)

Double-checked locking(英語版)

Event-based asynchronous(英語版)

Guarded suspension(英語版)

Join(英語版)

ロック

モニタ

Proactor(英語版)

Reactor

Readers?writer lock(英語版)

Scheduler(英語版)

Thread pool(英語版)

スレッド局所記憶

アーキテクチャに関するパターン

Front Controller(英語版)

Interceptor(英語版)

MVC

MVVM

多層アーキテクチャ

Specification(英語版)

出版-購読型モデル

Naked objects(英語版)

Service Locator(英語版)

Active Record

Identity map(英語版)

Data Access Object

Data Transfer Object

その他のパターン

依存性の注入 (DI)

遅延読み込み

モックオブジェクト

Null object(英語版)

Object pool(英語版)

Servant(英語版)

Type tunnel(英語版)

関連する人々

ギャング・オブ・フォー

エーリヒ・ガンマ

リチャード・ヘルム

ラルフ・ジョンソン

ジョン・ブリシディース


クリストファー・アレグザンダー

グラディ・ブーチ

ケント・ベック

ウォード・カニンガム

マーティン・ファウラー

ロバート・セシル・マーティン(英語版)

ジム・コプリエン(英語版)

ダグラス・C. シュミット(英語版)

リンダ・ライジング(英語版)

関連項目

アナリシスパターン

アンチパターン



一覧

カテゴリ

コモンズ


記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:11 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef