建造者模式 Builder Pattern

2021-06-05 02:31:43 字數 3056 閱讀 8933

建造者模式(builder pattern):

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

建造者模式是一步一步建立乙個複雜的物件,它允許使用者只通過指定複雜物件的型別和內容就可以建立它們,

使用者不知道內部具體的構建細節。

builder:抽象建造者

(1)為建立 乙個product物件的各個部件指定抽象介面。

concretebuilder:具體建造者

(1)實現builder介面,構造和裝配產品的各個部件

(2)定義並明確它所建立的表示

(3)提供乙個返回這個產品的介面

director:指揮者

構建乙個適應builder介面的物件

product:產品角色

(1)被構建的複雜物件,具體建造者建立該產品的內部表示並定義它的裝配過程。

(2)包含定義組成部件的類,包含將這些部件裝配成最終產品的介面。

建造者模式解析:

///

/// product類:產品類,由多個部件組成

///

class product

public void show()}}

///

/// builder類:抽象建造者類,確定產品由兩個部件parta和partb組成,並宣告乙個得到產品構建後結果的方法

///

abstract class builder

class concretebuilder1 : builder

public override void builderpartb()

public override product getresult()}

class concretebuilder2 : builder

public override void builderpartb()

public override product getresult()}

///

/// director:指揮者類

///

class director}

class program}

應用場景:

主要用於建立一些複雜的物件,這些物件內部構建間的順序通常是穩定的,但物件內部的構建通常面臨這複雜的變化。

例項:畫遊戲小人

///

/// builder抽象建造類

/// 抽象的建造人的類,穩定住花小人的每乙個步驟,不讓任何人遺忘當中的任何一步

///

public abstract class personbuilder

public abstract void builderhead();

public abstract void builderbody();

public abstract void builderarmleft();

public abstract void builderarmright();

public abstract void builderlegleft();

public abstract void builderlegright();}

///

/// concretebuilder類:具體的建造者類

/// 建造乙個瘦的小人,讓繼承personbuilder類,這樣就必須重寫抽象類的方法,避免遺忘

///

public class personthinbuilder:personbuilder

public override void builderhead()

public override void builderbody()

public override void builderarmleft()

public override void builderarmright()

public override void builderlegleft()

public override void builderlegright()}

///

/// concretebuilder類:具體的建造者類

/// 建造乙個胖的小人,讓繼承personbuilder類,這樣就必須重寫抽象類的方法,避免遺忘

///

public class personfatbuilder:personbuilder

public override void builderhead()

public override void builderbody()

public override void builderarmleft()

public override void builderarmright()

public override void builderlegleft()

public override void builderlegright()}

///

/// director:指揮者類

/// 用來控制建造過程,也用來隔離使用者與建造過程的關聯

///

public class persondirector

///

/// 根據使用者的選擇構建小人

///

public void createperson()}

客戶端呼叫:

pen p = new pen(color.blue);

personbuilder pbthin = new personthinbuilder(this.picturebox1.creategraphics(), p);

persondirector pdthin = new persondirector(pbthin);

pdthin.createperson();

personbuilder pbfat = new personfatbuilder(this.picturebox2.creategraphics(), p);

persondirector pdfat = new persondirector(pbfat);

pdfat.createperson();

建造者模式

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

建造者模式

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

建造者模式

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