建立型 建造者模式

2021-10-19 08:46:07 字數 1224 閱讀 2876

使用建立物件時,需要對建立例項物件的屬性進行校驗,屬性之間有一定關聯;或者需要建立的必要引數比較多,直接寫在建構函式比較難看,而直接用set又無法保證能確確實實被例項化。

例: 需要定義乙個執行緒池,執行緒池包括以下配置屬性:執行緒池大小、執行緒池最大空閒例項、執行緒池最小空閒例項

這幾個屬性之間存在關係。執行緒池大小 >=執行緒池最大空閒例項; 執行緒池最大空閒例項》=執行緒池最小空閒例項

一般寫法

public

class

threadpool

if(maxidle < minidle)

this

.maxtotal = maxtotal;

this

.maxidle = maxidle;

this

.minidle = minidle;

}}

建造者模式寫法

public

class

threadpool

public

static

class

builder

if(maxidle < minidle)

return

newthreadpool

(this);

}public

intgetmaxtotal()

public builder setmaxtotal

(int maxtotal)

public

intgetmaxidle()

public builder setmaxidle

(int maxidle)

public

intgetminidle()

public builder setminidle

(int minidle)

}}

使用

threadpool threadpool =

newthreadpool.builder()

.setmaxtotal(10

).setmaxidle(8

).setminidle(4

).build()

;

優點:

可以優雅處理例項化類時各種類屬性的關係,和引數的校驗過程

缺點:類內類builder 需要定義的實際類(threadpool)差不的屬性結構,有較多的重複**

建造者模式(建立型)

建造者模式 builder pattern 又稱生成器模式 將乙個複雜的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。這個 builder,其實和模板模式非常的像,但是也有區別,那就是在模板模式中父類對子類中的實現進行操作,在父類之中進行一件事情的處理,但是在 builder 模式之中,...

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

建造者模式的結構 產品角色 抽象建造者 具體建造者 指揮者。相比抽象工廠模式,省掉了抽象產品,多了指揮者。產品class product 抽象建造者 abstract class builder 具體建造者 public class concretebuilder extends builder p...

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

生產乙個遊戲玩家,遊戲玩家由臉 身體 腿 胳膊組成,組裝時有順序要求 from abc import abcmeta,abstractmethod 產品 class player def init self,face none body none arm none leg none self.fac...