建造者模式 建立型模式

2021-10-06 01:15:57 字數 2931 閱讀 3453

文章優先發表在個人部落格:

根據說明寫出**

我們需要建造房子,房子的種類有多種,這裡只要求兩種:平房、高樓。建房的過程兩個,打地基、蓋房。(真實的房子種類和建造過程及其複雜,這裡簡化兩種即可)

house

import lombok.data;

@data

public

class

house

buildhouse 面向介面寫**

// 構建房子-抽象類

public

inte***ce

buildhouse

bungalow 平房

public

class

bungalow

implements

buildhouse

@override

public

void

housebuilding()

@override

public house gethouse()

}

tallbuilding 高樓

public

class

tallbuilding

implements

buildhouse

@override

public

void

housebuilding()

@override

public house gethouse()

}

q: 可能小夥伴覺得,上面這麼簡單的**如果進行解耦(使用建造者模式),那不是增加了**的複雜性嘛?a: 使用建造者模式的時候我們一般是去解決複雜的物件建立,上面的**只是為了引出這個思考。如果實際**真如上面這樣簡單,那我們的確無需使用建造者模式了。建造者模式:將複雜物件的建造過程抽象出來,使這個抽象過程的不同實現方式,可以構造出不同的表現物件。建造者模式允許使用者只通過指定複雜物件的型別和內容就可以構建它們,使用者不需要知道它們內部具體的構建細節。

product(產品角色): 乙個具體的產品物件。 (比如上面的房子)

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

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

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

house (產品角色)

import lombok.data;

@data

public

class

house

buildhouse (抽象建造者)

// 構建房子-抽象類

public

inte***ce

buildhouse

bungalow 具體建造者

public

class

bungalow

implements

buildhouse

@override

public

void

housebuilding()

@override

public house gethouse()

}

tallbuilding 具體建造者

public

class

tallbuilding

implements

buildhouse

@override

public

void

housebuilding()

@override

public house gethouse()

}

director 指揮者

public

class

director

// 基於set方法注入

public

void

setbuildhouse

(buildhouse buildhouse)

// 具體的構建方法

public house builder()

}

注:這裡之所以只用兩種方式注入,就比如下面的測試,我們要使用這個 director 去建立兩個不同的產品,所以具體建造者需要改變。測試

建立型模式 建造者模式

建造者模式 builder pattern 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。與抽象工廠的區別 在建造者模式裡,有個指導者,由指導者來管理建造者,使用者和指導聯絡,指導者聯絡建造者最後得到產品牌。即建造模式可以強制實現一種分步驟進行的建造過程。建造者模式將複雜...

建立型模式 建造者模式

這段時間剛好要觀摩持久層框架mybatis,恰好看到mybatis 複雜的工廠物件 sqlsessionfactory 的生成類 sqlsessionfactorybuilder 不禁想起gof 23種設計模式中的建造者模式。對照現實中,你去買車時只需知道你要買車的型別,便可到店中購得心滿意足的產品...

建立型模式 建造者模式

在開發中經常有些複雜的物件,它們擁有一系列成員屬性,這些成員屬性中有些是引用型別的成員物件。而且在這些複雜物件中,通過不同的屬性生成 不同的物件 比如 汽車 這個物件,通過不同的發動機製造出來之後,都是汽車 但是他的效能,是不同的 建造者模式 builder pattern 將乙個複雜的物件的構建過...