4 建造者模式

2021-09-02 19:26:06 字數 2502 閱讀 5101

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

1、builder:給出乙個抽象介面,以規範產品物件的各個組成成分的建造。這個介面規定要實現複雜物件的哪些部分的建立,並不涉及具體的物件部件的建立。

2、concretebuilder:實現builder介面,針對不同的商業邏輯,具體化複雜物件的各部分的建立。 在建造過程完成後,提供產品的例項。

3、director:呼叫具體建造者來建立複雜物件的各個部分,在指導者中不涉及具體產品的資訊,只負責保證物件各部分完整建立或按某種順序建立。

4、product:要建立的複雜物件。

example:

二、例項演示

這裡以遊戲開發中人物的構造過程為例。在遊戲中建立乙個形象時,需要對每個部位進行建立。簡化而言,需要建立頭部,身體和四肢。

1、product(要建立的複雜物件):

建立乙個人物物件person

public class person  

public void sethead(string head)  

public string getbody()  

public void setbody(string body)  

public string getfoot()  

public void setfoot(string foot)  

}2、builder(給出乙個抽象介面,以規範產品物件的各個組成成分的建造。這個介面規定要實現複雜物件的哪些部分的建立,並不涉及具體的物件部件的建立):

public inte***ce personbuilder  

3、concretebuilder(實現builder介面,針對不同的商業邏輯,具體化複雜物件的各部分的建立。 在建造過程完成後,提供產品的例項):

public class manbuilder implements personbuilder  

public void buildbody()  

public void buildfoot()  

public void buildhead()  

public person buildperson()  

}  4、director(呼叫具體建造者來建立複雜物件的各個部分,在指導者中不涉及具體產品的資訊,只負責保證物件各部分完整建立或按某種順序建立):

public class persondirector  

}  測試:

public class test  

} 2. 建造者模式(builder pattern)使用多個簡單的物件一步一步構建成乙個複雜的物件。

建造者模式主要包含四個角色

product(產品角色):乙個具體的產品物件。 

builder(抽象建造者):建立乙個product物件的各個部件指定的抽象介面。 

concretebuilder(具體建造者):實現抽象介面,構建和裝配各個部件。 

director(指揮者):構建乙個使用builder介面的物件。它主要是用於建立乙個複雜的物件。它主要有兩個作用,一是:隔離了客戶與物件的生產過程,二是:負責控制產品物件的生產過程。

1 ) 乙個典型的複雜物件其類**示例如下:

public class product 

2 ) 抽象建造者類中定義了產品的建立方法和返回方法,其典型**如下:

public abstract class builder

} 3 ) 具體建造者。實現抽象介面,構建和裝配各個部件,例項**如下:

public class concretebuilder extends builder

public void buildpartb()

public void buildpartc()

}4)指揮者類的**示例如下:

建造者模式的結構中還引入了乙個指揮者類director,該類的作用主要有兩個:一方面它隔離了客戶與生產過程;另一方面它負責控制產品的生成過程。指揮者針對抽象建造者程式設計,客戶端只需要知道具體建造者的型別,即可通過指揮者類呼叫建造者的相關方法,返回乙個完整的產品物件。

public class director

//2 set方法注入builder物件

public void setbuilder(builder builder)

public product construct()

} 5 ) 客戶端類**片段:

builder builder = new concretebuilder();

director director = new director(builder);

product product = director.construct();

1、建造者模式是將乙個複雜物件的建立過程給封裝起來,客戶只需要知道可以利用物件名或者型別就能夠得到乙個完整的物件例項,而不需要關心物件的具體建立過程。

2、建造者模式將物件的建立過程與物件本身隔離開了,使得細節依賴於抽象,符合依賴倒置原則。可以使用相同的建立過程來建立不同的產品物件。

4 建造者模式

在軟體系統中,有時候面臨乙個 複雜物件 的建立工作,其通常由各個部分的子物件用一定演算法構成 由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合到一起的演算法卻相對穩定。如何應對種變化呢?如何提供一種 封裝機制 來隔離出 複雜物件的各個部分 的變化,從而保持系統中的 穩定構建...

4 建造者模式(Builder Pattern

建造者模式更注重方法的呼叫順序,工廠模式注重建立產品 建立物件的粒度不同,建造者模式可以建立一些複雜的產品,由各種複雜的部件組成,工廠模式建立出來的都是乙個樣子 關注點不同,工廠模式注重的只要把產品建立出來就ok了,而建造者模式不止要建立產品,還需要知道是由那些部件組成的 在某些業務場景,比如說一定...

設計模式4 建造者模式

首先說說建造者模式要解決乙個什麼樣的問題 流程控制,即保證方法先後順序正確且沒有遺漏.用於靈活指導操作細節.建造者模式包括 乙個導演類 用於規定操作順序 乙個建造者介面 用於規定建造者的操作 具體的建造者 建造者的具體實現類 例如 public class buildertest class fil...