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

2021-09-24 05:26:53 字數 2159 閱讀 8233

建造者模式概述

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模式是為物件的建立而設計的模式

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

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

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

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

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

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

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

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