設計模式學習筆記 建造者模式(Builder)

2021-10-08 08:37:40 字數 4491 閱讀 4245

三、建造者模式和工廠模式的比較

不要沮喪,不必驚慌,做努力爬的蝸牛或堅持飛的笨鳥,我們試著長大,一路跌跌撞撞,然後遍體鱗傷。堅持著,總有一天,你會站在最亮的地方,活成自己曾經渴望的模樣。

建造者模屬於設計模式中的建立型模式。建造者模式提供了一種最佳的建立物件的方式。建造者模式將乙個複雜的物件的構建與其表示分離,使得同樣的構建過程可以建立不同的表示。

建造過程:

客戶端直接和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.定義乙個構建產品部分或過程...