07建造者模式

2021-09-20 10:32:53 字數 1811 閱讀 7724

builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。

builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立

過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。

二、建造者模式結構

其中建造者時乙個公共介面,提供構造的方法;具體的建設者實現建設者介面,提供乙個全域性的獲取建設者的方法;

設計者director需要提供乙個建造者例項,以及乙個具體的建造方法;最終產品由具體的建造者來提供。

1)物件的建立:builder模式是為物件的建立而設計的模式

2)建立的是乙個復合物件:被建立的物件為乙個具有復合屬性的復合物件

3)關注物件建立的各部分的建立過程:不同的工廠(這裡指builder生成器)對產品屬性有不同的建立方法

目標:建造房子

首先提供乙個房子類及其相關的屬性

public class house 

public void setfloor(string floor)

public string getwall()

public void setwall(string wall)

public string getroof()

public void setroof(string roof)

@override

public string tostring() ';}}

設計實現乙個房屋的建造者(介面-----》施工隊伍)

/**

* 房屋構造工程隊

*/public inte***ce housebuilder

我們將要修改乙個瓦房:

package com.dzg.learn.builder;

/** * 瓦房構造工程隊

*/public class wafangbuilder implements housebuilder

public void makewall()

public void makeroof()

public house gethouse()

}

package com.dzg.learn.builder;提供乙個設計師來設計如何構造房子:/**

* 房屋設計師

*/public class housedirector */

public void makehouse(housebuilder housebuilder)

}

然後只需要,設計師讓施工隊對房子進行相應的構造實現即可

public class testbuilder 

}

house

注:對於房屋的屬性,可以是復合屬性

比如對於floor可以提供兩個選擇:大理石或磨砂,tostring方法中需要對所要獲得的地板樣式進行判斷

public string tostring() ';

else';}}

在瓦房建造者中,對瓦房屋頂的實現進行更改

public void makefloor()

設計模式07 建造者模式

這個直接用例子來理解,對於房子,有牆 門 窗,不同型別的房子牆 門 窗不同。在 中我有相應的解釋。include include using namespace std 先抽象房子 class house void setdoor string door void setwindow string ...

建造者模式

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

建造者模式

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