簡介: 建造者模式,又稱之為生成器模式,屬於創建型的設計模式。將一個複雜對象的構建,與它的表示分離,使得同樣的構建過程可以創建不同的表示。 適用場景: 用於創建一些複雜的對象,這些對象內部構建間的建造順序通常是穩定的(這就表名可以抽離),但對象的外在面臨著複雜的變化。 優點: 創建和表象分離 缺點: ...
簡介:
建造者模式,又稱之為生成器模式,屬於創建型的設計模式。將一個複雜對象的構建,與它的表示分離,使得同樣的構建過程可以創建不同的表示。
適用場景:
用於創建一些複雜的對象,這些對象內部構建間的建造順序通常是穩定的(這就表名可以抽離),但對象的外在面臨著複雜的變化。
優點:
創建和表象分離
缺點:
如果核心類內部發生變化,建造者也要相應修改
與工廠模式:
比工廠模式多了一道自行處理的工序
代碼:
abstract class TestPaper {
abstract public function BuildPaper();
abstract public function BuildQuestion();
}
class ChineseExaminationPaper extends TestPaper {
public function BuildPaper() {
echo "使用A4紙";
}
public function BuildQuestion() {
echo "語文題";
}
}
class EnglishExaminationPaper extends TestPaper {
public function BuildPaper() {
echo "使用A6紙";
}
public function BuildQuestion() {
echo "英文題";
}
}
class ExaminationPaper {
private $examination_paper;
function __construct($examination_paper) {
$this->examination_paper = $examination_paper;
}
public function create() {
$this->examination_paper->BuildPaper();
$this->examination_paper->BuildQuestion();
}
}
//客戶端代碼
$thinDirector = new ExaminationPaper(new ChineseExaminationPaper());
$thinDirector->create();
$fatDirector = new ExaminationPaper(new EnglishExaminationPaper());
$fatDirector->create();