建造者模式(builder pattern)屬于創(chuàng)建型模式的一種臼疫,提供一種創(chuàng)建復(fù)雜對象的方式证杭。它將一個復(fù)雜的對象的構(gòu)建與它的表示分離徽职,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示枝缔。
建造者模式是一步一步的創(chuàng)建一個復(fù)雜的對象,它允許用戶只通過指定復(fù)雜的對象的類型和內(nèi)容就可以構(gòu)建它們潜必,用戶不需要指定內(nèi)部的具體構(gòu)造細(xì)節(jié)靴姿。
本文首發(fā)于 建造者(builder)模式
使用場景
日常生活中,比如組裝電腦磁滚,生產(chǎn)汽車,都是有多個步驟來一步一步構(gòu)建的,這時候就可以使用建造者模式來解決這個問題垂攘。下面以組裝電腦為例子维雇,比如組裝游戲電腦,組裝辦公電腦晒他。步驟都是一樣的吱型,最終都會出一個成品出來。
function gameComputerBuilder() {
this.buildMainboard = function() {
console.log('游戲主板');
};
this.buildCPU = function() {
console.log('游戲CPU');
};
this.buildHardDisk = function() {
console.log('游戲硬盤');
};
this.getComputer = function() {
return '游戲電腦';
};
}
function officeComputerBuilder() {
this.buildMainboard = function() {
console.log('辦公主板');
};
this.buildCPU = function() {
console.log('辦公CPU');
};
this.buildHardDisk = function() {
console.log('辦公硬盤');
};
this.getComputer = function() {
return '辦公電腦';
};
}
function Operator() {
this.startBuild = function(builder) {
builder.buildMainboard();
builder.buildCPU();
builder.buildHardDisk();
return builder.getComputer();
};
}
const op = new Operator();
const gameComputer = new gameComputerBuilder();
const officeComputer = new officeComputerBuilder();
const gc = op.startBuild(gameComputer);
console.log(gc)
const oc = op.startBuild(officeComputer);{}
console.log(oc)