vol.4
Builder
月曜だから
デザインパターンでも勉強しよう
Builder
オブジェクトの生成を抽象化する
class Director {
private $builder;
public function __construct($builder) {
$this->builder = $builder;
}
public function make() {
$this->builder->preprocess();
$this->builder->execute();
$this->builder->postprocess();
return $this->builder->getResult();
}
}
オブジェクトの生成を抽象化する
interface Builder {
public function preprocess();
public function execute();
public function postprocess();
public function getResult();
}
何が嬉しいの?
オブジェクト作成の過程とその詳細を分離できる
何が嬉しいの?
オブジェクト作成の過程とその詳細を分離できる
例えば異なるデータソースからデータを取ってくる場合、
接続して、データを取得して、接続を閉じる、
というのをDirectorで定義し、
実際の細々とした接続処理などはBuilderで定義できる
Builderを入れ替えれば具象の取り換えが利く
何が嬉しいの?
オブジェクト作成の過程とその詳細を分離できる
例えば異なるデータソースからデータを取ってくる場合、
接続して、データを取得して、接続を閉じる、
というのをDirectorで定義し、
実際の細々とした接続処理などはBuilderで定義できる
Builderを入れ替えれば具象の取り換えが利く

月曜だからデザインパターンでも勉強しよう vol.4 Builder