建造者模式的定義是:將乙個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示,這樣的設計模式被稱為建造者模式。
在建造者模式中存在以下4個角色:
builder:為建立乙個產品物件的各個部件指定抽象介面。其實就是乙個介面。
concretebuilder:實現builder的介面以構造和裝配該產品的各個部件,定義並明確它所建立的表示,並提供乙個檢索產品的介面。其實就是介面的實現類。
director:構造乙個使用builder介面的物件。
product:表示被構造的複雜物件。concretebuilder建立該產品的內部表示並定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。
乙個構建者模式包含以下幾個類:
new(configuration, id, sqlsource, sqlcommandtype)
.resource
(resource)
.fetchsize
(fetchsize)
.timeout
(timeout)
.statementtype
(statementtype)
.keygenerator
(keygenerator)
.keyproperty
(keyproperty)
.keycolumn
(keycolumn)
.databaseid
(databaseid)
.lang
(lang)
.resultordered
(resultordered)
.resultsets
(resultsets)
.resultmaps
(getstatementresultmaps
(resultmap, resulttype, id)).
resultsettype
(resultsettype)
.flushcacherequired
(valueordefault
(flushcache,
!isselect)).
usecache
(valueordefault
(usecache, isselect)).
cache
(currentcache)
;build()
;在上面**中,有一系列的屬性,比如:.resource(resource)、.fetchsize(fetchsize)等,導演類通過buld定製不同的屬性(組合不同的屬性),最終會產生不同屬性的物件。
在mybatis中的sqlsessionfactorybuilder類中通過build()方法構建sqlsessionfactory物件,該物件的構建就採用了構建者模式:
下面是sqlsessionfactorybuilder中build()方法:
可以通過呼叫不同的build()的方法(引數不一樣),構造出符合自己的sqlsessionfactory物件,採用的是構建者模式。
需求:通過構建者模式構建自己想要的物件,即產品。
/**
* 導演類:測試類
*/public
class
builddemo
}
/**
* 構造者類:構建器
* * 注意:我們寫的demo沒有建立build介面,就直接使用實現類來實現構造這模式。
*/public
class
studentbuild
public studentbuild name
(string name)
public studentbuild age
(int age)
public studentbuild father
(string fathername)
/** * 構建物件的方法:build方法
*/public student build()
}
/**
* 產品類
*/public
class
student
public
void
setid
(int id)
public string getname()
public
void
setname
(string name)
public
intgetage()
public
void
setage
(int age)
public father getfather()
public
void
setfather
(father father)
@override
public string tostring()
';}}
//子產品類:
public
class
father
public
void
setname
(string name)
}
1、我們的需求是:採用構建者模式,構建出不同的產品。由上面**的我們構建出了兩個產品。
2、導演類其實就是我們的測試類,即呼叫build
()方法的類。
3、構建者類:其實就是在乙個類中,對不同的屬性做了乙個構造方法,然後,通過乙個build
()方法
導演類想要組合的屬性組合到一起,然後通過build
()方法構造出想要的物件。
4、產品類:就是我們最終想要構造的物件。
5、該demo能夠直觀的讓我們理解構造者模式,但是模式不是固定的**格式,是可以變換的,這一點要記住。
設計模式 構建者模式
構建者模式,又稱建造者模式,將一部負責物件的構建分為許多小物件的構建,最後在整合構建的模式。構建者模式一般用在構建流程或者組成部件固定的場合,將這些部件分開構建成為元件物件,再將這些元件物件整合成為目標物件。最佳例項就是組裝台式電腦的情況,我們可以分別購買主機板 cpu 記憶體 硬碟等部件,然後將這...
設計模式 構建者模式
構建者模式主要是避免一些被new出來的物件的一些弊端。傳統情況下建立出乙個物件並賦值有兩種方式。使用構建者模式則不用關心引數的順序問題也不用事先把物件new出來。public class person 繼承builder介面 public static class personbuider impl...
設計者模式 構建者模式
一 介紹 場景 建造乙個複雜的產品。比如 神舟飛船,iphone,這個複雜的產品建立,有這樣乙個問題需要處理 裝配這些子元件,是不是有個步驟問題?實際開發中,需要的物件,在構建時,也非常複雜,有很多步驟需要處理。建造者模式的本質 分離物件子元件的單獨構造 由builder來負責 和裝配 由direc...