Builder パターンAdvertisement複雑なオブジェクトを生成する
作成したいオブジェクトの種類を指定するだけで、複雑な生成過程を経てオブジェクトが生成される。クライアントはオブジェクト生成の際の処理内容を意識する必要がない。
サンプルコード
Director クラス
public class Director {
public Director() {}
/** Builderを働かせる */
public void build(Builder builder){
builder.setMax();
builder.setName();
builder.setColor();
}
}
Builder クラス
abstract class Builder {
/** 最大人数の設定 */
abstract public void setMax();
/** 色の設定 */
abstract public void setColor();
/** 名前の設定 */
abstract public void setName();
/** 完成状態 */
abstract public String myInfo();
}
RedWagon クラス
import java.awt.Color;
public class RedWagon extends Builder{
public int max;
public String name;
public Color color;
public void setMax(){
this.max = 10;
}
public void setName(){
this.name = "赤いワゴン";
}
public void setColor(){
color = Color.RED;
}
public String myInfo(){
return "■車体の情報\n" + this.name + "\n"
+ this.max + "人乗り\n"
+ this.color.toString();
}
}
BlueBike クラス
import java.awt.Color;
public class BlueBike extends Builder{
public int max;
public String name;
public Color color;
public void setMax(){
this.max = 2;
}
public void setName(){
this.name = "二人乗りバイク";
}
public void setColor(){
color = Color.BLUE;
}
public String myInfo(){
return "■車体の情報\n" + this.name + "\n"
+ this.max + "人乗り\n"
+ this.color.toString();
}
}
Main クラス
public class Main {
public static void main(String[] args){
Director director = null;
Builder builder = null;
director = new Director();
builder = new RedWagon();
director.build(builder);
System.out.println(builder.myInfo());
builder = new BlueBike();
director.build(builder);
System.out.println(builder.myInfo());
}
}
実行結果 ■車体の情報 赤いワゴン 10人乗り java.awt.Color[r=255,g=0,b=0] ■車体の情報 二人乗りバイク 2人乗り java.awt.Color[r=0,g=0,b=255] クラス図
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |