六 設計模式之建造者模式(建立型)

2021-09-13 20:08:26 字數 2640 閱讀 5903

builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。

建造者模式的結構

在這樣的設計模式中,有以下幾個角色:

builder:為建立乙個產品物件的各個部件指定抽象介面。

concretebuilder:實現builder的介面以構造和裝配該產品的各個部件,定義並明確它所建立的表示,並提供乙個檢索產品的介面。

director:構造乙個使用builder介面的物件。

product:表示被構造的複雜物件。concretebuilder建立該產品的內部表示並定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。

首先,舉個例子,建造者模式我們比方我們要造個房子。

房子的圖紙

public

class

house

public

void

setfloor

(string floor)

public string getwall()

public

void

setwall

(string wall)

public string getroof()

public

void

setroof

(string roof)

}

有了圖紙後,最笨的方法就是自己造房子

客戶端

public

class

mainclass

}

可是這樣的方法不是很好,真正我們造房子都是找施工隊,所以我們要把造房子分離出來,交給施工隊

新建乙個施工隊,為了擴充套件性,宣告乙個施工隊的介面。

public

inte***ce

housebuilder

新建乙個施工隊,實現此介面

public

class

loufangbuilder

implements

housebuilder

@override

public

void

makewall()

@override

public

void

makeroof()

@override

public house gethouse()

}

客戶端

public

class

mainclass

}

可以看到,這樣子造房子就交給施工隊了,但可以看到造房子的具體細節還在客戶端裡,如圖。

這就相當於我們在指導施工隊幹活,這肯定不是最好的方案,最好的解決方案,是由乙個設計師也可以說是指揮者來指導工程隊,所以在新建乙個指揮者。

public

class

housedirector

public

void

make()

}

客戶端

public

class

mainclass

}

這樣子,把施工隊交給這個設計者,施工細節的工作就由這個設計者執行了。

當然,還有一種寫法,有一些細微的改動,也是更常用的,就是設計者(director)不在構造時傳入builder,而是在呼叫方法時,才傳入,像這樣

public

class

housedirector

}

客戶端

public

class

mainclass

}

這樣子,出來的效果是一樣的。

這就是乙個簡單的建造者模式

這樣也提高了系統的擴充套件性與可維護性,如果不想造樓房了,想造乙個別墅,只需新增乙個別墅施工隊就好了,像這樣

public

class

bieshubuilder

implements

housebuilder

@override

public

void

makewall()

@override

public

void

makeroof()

@override

public house gethouse()

}

客戶端只需把施工隊換成別墅施工隊

public

class

mainclass

}

六 設計模式之建造者模式(建立型)

建造者模式概述 builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。建造者模式的結構 角色在這樣的設計模...

建立型設計模式之建造者模式

建造者模式 主要用於將產品修飾的這部分內容抽象化,提供給外部乙個自由定製的修飾渠道,達到自由切換修飾規則但是不用修改舊 的效果。帶有抽象介面的建造者模式主要涉及的物件有 引導者 decorate 產品 抽象建造者介面 builder 定製化的builder。打個比方,我開著一輛拖拉機去石料場運載建築...

建立型設計模式之 建造者模式

建造者模式也被稱為生成器模式,它是建立乙個複雜物件的建立型模式,其將構建複雜物件的過程和它的部件解耦,使得構建過程和部件的表示分離開來。我們接著用工廠模式中的果園舉例,我們的水果店為了吸引老顧客 以及新顧客辦理會員,推出了各式各樣的 活動,例如會員購買蘋果 香蕉 桔子可以減15元 假日 活動可以立減...