三、建造者模式和工廠模式的比較
不要沮喪,不必驚慌,做努力爬的蝸牛或堅持飛的笨鳥,我們試著長大,一路跌跌撞撞,然後遍體鱗傷。堅持著,總有一天,你會站在最亮的地方,活成自己曾經渴望的模樣。建造者模屬於設計模式中的建立型模式。建造者模式提供了一種最佳的建立物件的方式。建造者模式將乙個複雜的物件的構建與其表示分離,使得同樣的構建過程可以建立不同的表示。
建造過程:
客戶端直接和director(指揮者)溝通;
通過向director傳入不同的concretebuilder(具體建造者)構建不同表示的product(產品)。
**示例:
**功能,建立計算機物件。
計算機(product):
import
lombok.
getter
;import
lombok.
setter
;import
lombok.
tostring
;/**
* 計算機
* * @author zhengnc
* @date 2020/7/16 18:32
*/@getter
@setter
@tostring
public
class
computer
計算機建造者介面(builder):
/**
* 計算機建造者介面
* * @author zhengnc
* @date 2020/7/16 19:32
*/public
inte***ce
computerbuilder
戴爾電腦建造者(concretebuilder):
/**
* 戴爾電腦建造者
* * @author zhengnc
* @date 2020/7/21 8:36
*/public
class
dellcomputerbuilder
implements
computerbuilder
@override
public
void
buildcpu()
@override
public
void
buildboard()
@override
public
void
buildram()
@override
public
void
buildharddisk()
@override
public
void
buildpowersupply()
@override
public
void
buildmonitor()
@override
public
void
buildmouse()
@override
public
void
buildkeyboard()
@override
public
computer
buildcomputer()
}
聯想電腦建造者(concretebuilder):
/**
* 聯想電腦建造者
* * @author zhengnc
* @date 2020/7/16 19:42
*/public
class
lenovocomputerbuilder
implements
computerbuilder
@override
public
void
buildcpu()
@override
public
void
buildboard()
@override
public
void
buildram()
@override
public
void
buildharddisk()
@override
public
void
buildpowersupply()
@override
public
void
buildmonitor()
@override
public
void
buildmouse()
@override
public
void
buildkeyboard()
@override
public
computer
buildcomputer()
}
計算機建造指揮者(director):
/**
* 計算機建造指揮者
* * @author zhengnc
* @date 2020/7/16 19:52
*/public
class
computerdirector
}
測試類:
/**
* 測試建造者模式
* * @author zhengnc
* @date 2020/7/16 19:58
*/public
class
testbuilder
}
方式一是建造者模式的標準模式,除了上面的方式,還有一種常見的方式,可以解決使用多引數構造方法建立物件不夠直觀的問題。
**示例:
還是上面的建立計算及的場景,為了減少篇幅,下面的計算機類我減少了幾個引數。
計算機類及建造者類(計算機類的內部靜態類):
import
lombok.
getter
;import
lombok.
setter
;import
lombok.
tostring
;/**
* 計算機
* * @author zhengnc
* @date 2020/7/20 22:04
*/@getter
@setter
@tostring
public
class
customcomputer
private
customcomputer
(builder builder)
public
static
builder
builder()
public
static
class
builder
/** * 設定cpu
* @param cpu
* @return
*/public
builder
cpu(
string cpu)
/** * 設定主機板
* @param board
* @return
*/public
builder
board
(string board)
/** * 設定記憶體
* @param ram
* @return
*/public
builder
ram(
string ram)
/** * 組裝電腦
* @return
*/public
customcomputer
build()
}}
測試類:
/**
* 測試建造者模式
* * @author zhengnc
* @date 2020/7/16 19:58
*/public
class
testbuilder
}
建造者模式建立的是同乙個類不同表示的物件;工廠模式建立的是不同的類的不同的物件。
抽象工廠模式可以建立一系列同乙個產品族的產品(如:電腦的各種配件),建造者模式可以把一系列同乙個產品族的產品組裝成更複雜的產品(電腦)。
設計模式學習筆記 建造者模式
1.概述 將乙個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示,這樣的設計模式被稱為建造者模式。2.建造者模式中的角色 2.1 建造者 builder 為建立乙個產品物件的各個部件指定抽象介面。2.2 具體建造者 concretebuilder 實現builder的介面以構造和裝配...
設計模式學習筆記(7) 建造者模式
本人做的設計模式學習筆記系列的博文旨在用於個人學習之用,主要記載自己對設計模式的理解及 的實現 在建造者模式中,主要的角色有指揮者 抽象建造者類 具體建造者類和產品角色,建造者模式主要為構建多個組成元素相近,包含很多屬性和方法的複雜結構物件提供建造的模板,並且由指揮者指揮建造的流程。以下給出 複雜產...
學習設計模式 建造者模式
說明 如果你需要將乙個複雜的物件或功能的構建流程和表示分離,使得同樣的構建流程,也可以建立出不同的表示,例如麥當勞做炸東西,炸東西的流程是一樣的,但放入的材料不同,炸出來的東西不一樣 例如雞排 雞腿 雞翅等 需求 使用者要個炸雞腿 解決方式 a.定義乙個產品類 炸東西 b.定義乙個構建產品部分或過程...