Syong 建造者模式

2021-10-01 07:16:26 字數 3445 閱讀 6476

what

建造者模式(builder pattern):將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

建造複雜的物件;

建立與表示分離;

同樣構造過程可以建立不同表示;

一步一步構造最終的物件;

builder:抽象建造者;

concretebuilder:具體建造者,實現builder,知道要建造什麼物件,建造每一步的具體細節,但是不知道建造的過程(順序);

director:監工(導演/指揮/有多種叫法),知道建造的過程(順序);

how

示例1:簡單示例

//測試類

public

class

test

}//抽象builder

inte***ce

builder

//句子builder:知道建立stringbuilder的每乙個步驟,但不知道順序

class

sentencebuilder

implements

builder

@override

public

void

word_are()

@override

public

void

word_you()

@override

public

void

word_i()

@override

public

void

word_am()

@override

public

void

word_fine()

@override

public string say()

}//director知道怎麼用builder去建立stringbuilder

class

director

public

void

construct

(string answerorquestion)

elseif(

"answer"

.equals

(answerorquestion)

)else

}}

示例2:建造複雜pen物件

public

class

test

}class

penpublic string getcolor()

public

void

setprice

( double price )

public double getprice()

}//抽象builder

inte***ce

builder

//pen builder

class

penbuilder

implements

builder

@override

public

void

initcolor()

@override

public

void

initprice()

@override

public

void

before()

@override

public

void

after()

@override

public pen get()

}//director知道怎麼用builder去建立pen

class

director

public

void

construct()

}

示例3:建造者模式與鏈式呼叫結合

public

class

test

}class

penpublic

void

setcolor

( string color )

public string getcolor()

public

void

setprice

( double price )

public double getprice()

public

static

class

penbuilder

public penbuilder setprice

( double price )

public pen build()

}}

為什麼沒有director了呢?

new pen.penbuilder().setcolor("red").setprice(12.0).build()就相當於director

/**

* constructs a string builder initialized to the contents of the

* specified string. the initial capacity of the string builder is

* plus the length of the string argument.

** @param str the initial contents of the buffer.

*/public

stringbuilder

(string str)

父類:abstractstringbuilder

/**

* @since 1.8

*/(abstractstringbuilder asb)

q & a

建造者模式與模板模式的區別?

參考鏈結link

建造者模式與工廠模式的區別?

個人理解:

工廠模式更傾向於一次性建立乙個物件,並一次性初始化引數等等,有點一步到位的意思;

而建造者模式,有點可定製化建立物件的意味在裡面,或者說就是其中的乙個特點。

優化:建造者模式與鏈式呼叫結合

相關鏈結link

more

結束語:優秀是一種習慣。

建造者模式

1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...

建造者模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...

建造者模式

建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...