ビルダー パターンは創造的なパターンです
概要: 複雑なオブジェクトの構築をその表現から分離し、同じ構築プロセスで異なる表現を作成できるようにします
利点:
ビルダー パターンは非常に優れたものになる可能性がありますオブジェクトの分離関連する「ビジネス」ロジックから実装を行うため、イベント ロジックを変更せずに実装を追加 (または変更) することが非常に簡単になります
欠点:
ビルダー インターフェイスの変更により、すべての実行クラスが変更されます
ビルダーは次のことを行う必要があります以下の状況で使用できます:
1 生成する必要がある製品オブジェクトの内部構造が複雑である
2 生成する必要がある製品オブジェクトのプロパティは相互に依存しており、ビルダー パターンによって生成順序が強制される可能性がある
3 オブジェクト作成プロセス中に、システム内の他のオブジェクトが使用されます。これらのオブジェクトは、製品作成プロセス中に取得するのが簡単ではありません。
ビルダー パターンを使用すると、主に次のような効果があります。ビルダー パターンは製品の内部外観を作成します ビルダー モードを使用すると、クライアントは製品の内部構成の詳細を知る必要がなく、独立して変更できます
2 各ビルダーは比較的独立しており、何の関係もありません他のビルダー
3 モードによって構築された最終プロダクトは制御が容易です
class Product{
public $type = null;
public $price = null;
public $color = null;
public function setType ($type){
$this->type = $type;
}
public function setPrice($price){
$this->price = $price;
}
public function setColor ($color){
$this->color = $color;
}
}
$config = array(
'type' => 'シャツ',
'価格' => 100,
'color' => 'red',
);
//ビルダーモードを使用しないでください
$product = new Product();
$product->setType[' type']);
$product->setPrice($config['price ']);
$product->setColor($config['color']);
ビルダーモードを使用します
/*ビルダークラス*/
class ProductBuilder{
public $config = null;
public $object = null;
public function __construct($config){
$this->object = new Product();
$this->config = $config;
}
public function build (){
$this->gt;object->setType($this->config['type']);
$this->object->setPrice($this->config['price']);
$this->object->setColor($this->config['color']);
}
public function getProduct(){
return $this->object;
}
}
$objBuilder = new ProductBuilder($config);
$objBuilder->build();
$objProduct = $objBuilder->getProduct();
var_dump($ objProduct);