設計模式之建造者模式 四

2021-09-18 04:33:02 字數 1466 閱讀 7102

在某些情況下,乙個物件會有一些重要的屬性,在它們沒有恰當的值之前,物件不能作為乙個完整的產品使用。比如,乙個電子郵件有發件人位址、收件人位址、主題、內容、附錄等部分,而在最起碼的收件人位址未被賦值之前,這個電子郵件不能發出。

建造者模式將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式是一步一步建立乙個複雜的物件,它允許使用者只通過指定複雜物件的型別和內容就可以構建它們,使用者不需要知道內部的具體構建細節。建造者模式屬於物件建立型模式。

builder:抽象建造者

concretebuilder:具體建造者

director:指揮者

product:產品角色

director和builder是聚合關係(**實現聚合的時候,成員物件通常採用建構函式注入,setter方法引數注入。)

以快餐店為例子

漢堡可樂這些就是產品

/*

* **類

*/public class meal

public void setfood(string food)

public string getdrink()

public void setdrink(string drink)

}

生產食物總得有步驟吧?定義乙個生產線生產**

/*

* **構造器

*/public abstract class mealbuilder

}

食物類和生產食物的步驟我們都寫好了,現在就可以生產各種我們要的**了,即具體的建造者

/*

* a**

*/public class meala extends mealbuilder

public void buildfood()

}

/*

* b**

*/public class mealb extends mealbuilder

public void buildfood()

}

但是客戶不是直接知道生產過程的,而是通過告訴服務員直接要什麼**然後服務員傳遞資訊給後廚指揮生產

/*

* 服務生

*/public class kfcwaiter

public meal construct()

}

測試類

設計模式之四 建造者模式

建造者模式也叫生成器模式 定義 講乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式的優點 封裝性 客戶端不必要知道產品內部組成的細節。建造者獨立,容易擴充套件 使用的場景 1.相同的方法,不同的執行順序,產生的不同的事件結果,採用建造者模式 2.多個部件或零件,都...

設計模式 四 建造者模式

目錄 前言 1 為什麼要用建造者模式 2 建造者模式怎麼用 3 工廠模式和建造者模式 4 結語 學會了建造者模式之後可能有的朋友疑問更深了,為啥我不能用工廠模式來解決呢,我把建立的 抽取到工廠中去,然後根據客戶端的選擇直接建立產品不就行了嗎?建造者模式是建立型模式中比較特別的乙個模式,但特別只是你主...

設計模式(四)建造者模式

奇怪,我怎麼感覺我寫過這個東西。好吧,我翻了一下,沒有寫。這個東西,和工廠模式差不多。差別在於 工廠模式是生產不同的物件。構建者相當於,選擇不同型號的配件來組裝成品。我突然記起來了,我真的沒有寫過這個東西。是以前看書的時候做過筆記而已。一,設定部件 典型的場景,比如qq秀裝備。設定衣服,帽帽,褲褲,...