設計模式之建造者模式

2022-01-29 11:46:53 字數 2382 閱讀 8946

建造者模式:將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。**至《大話設計模式》)。

學習這個模式後,不知覺得和之前的簡單工廠模式做了對比,發現二者都是建立物件。但二者還是有所區別的,簡單工廠模式是更具不同的情況建立不同的物件,

而建造者模式則主要是用於建立一些複雜的物件,這些物件內部構建間的建造順序通常是穩定的,但物件內部

的構建通常面臨複雜的變化。

建造者模式的好處就是使得建造**與表示**分離,由於建造模式印廠了該產品是如何組裝的,所以需要改變乙個產品的內部表示,只需要再定義乙個具體的建造者就可以了。

下面的**:是利用graphics來畫圖。

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.threading.tasks;

using

system.windows.forms;

namespace

建造者模式

set }

public

graphics g

set }

public

man(pen myp, graphics myg)

public

virtual

void

buildhead()

public

virtual

void

buildbody()

public

virtual

void

buildleftarm()

public

virtual

void

buildrightarm()

public

virtual

void

buildleftleg()

public

virtual

void

buildrightleg()

}public

class

thinman : man

public

override

void

buildhead()

public

override

void

buildbody()

public

override

void

buildleftarm()

public

override

void

buildrightarm()

public

override

void

buildleftleg()

public

override

void

buildrightleg()

}public

class

fatman:man

public

override

void

buildhead()

public

override

void

buildbody()

public

override

void

buildleftarm()

public

override

void

buildrightarm()

public

override

void

buildleftleg()

public

override

void

buildrightleg()

}public

class

manbuilder

public

void

show()

}public

partial

class

form1 : form

private

void button1_click(object

sender, eventargs e)}}

執行結果:

設計模式之建造者模式

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

設計模式之建造者模式

建造者模式也叫生成器模式,是一種物件建立型模式,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承或過載的方式,動態的建立具有復合屬性的物件。應用場景 物件的建立 builder 模式是為物件的建立而設計的模式 建立的是乙個復合物件 被建立的物件為乙個具有復合屬性的復合物件 關...

設計模式之建造者模式

在做服務介面的時候,往往在業務處理之前需要做業務校驗,格式校驗等業務前處理。這些介面有個相同的特徵,就是必須經過這些處理步驟之後才能做核心的業務處理,拓展的服務介面也必須經過這些處理。基於這個特徵,我們就來分析一下設計模式中,建造者模式。我們先建乙個基礎的服務類 public abstract cl...