在軟體系統中,有時面臨著乙個複雜物件的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。如何提供一種"封裝機制"來隔離出"各個部分"的變化,從而保持系統中的"穩定構建演算法"不隨需求的改變而改變?
建造者(builder)模式也叫生成器模式。用它來建立物件,目的是省去在物件發生變化時,需要修改**中每一處物件建立的地方,應用這種模式,可以在乙個複雜物件的內部結構(由許多其他子物件構成的結構)發生變化時,僅需要對物件有所修改,而複雜物件與其他的物件之間的關係、行為不需要進行修改。
gof:將乙個複雜物件的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。
的物件的
建立工作。
看實現**:
code
using
system;
using
system.collections;
using
system.collections.generic;
namespace
builderpattern
//作業系統
public
abstract
class
os//
瀏覽器public
abstract
class
browser
//聊天軟體
public
abstract
class
chattool
//public
abstract
class
videotool
//windows應用系統
public
class
public
override
void
saysomething()}//
macintosh應用系統
public
class
public
override
void
saysomething()}//
應用系統builder類
public
abstract
class
public
abstract
void
buildos();
public
abstract
void
buildbrowser();
public
abstract
void
buildchattool();
public
abstract
void
buildvideotool();
public
abstract
//返回乙個應用系統}//
具體應用系統builder類 --windows應用系統
public
class
private
=new
public
override
void
buildos()
public
override
void
buildbrowser()
public
override
void
buildchattool()
public
override
void
buildvideotool()
public
override
return
//具體應用系統builder類 --mac應用系統
public
class
private
=new
public
override
void
buildos()
public
override
void
buildbrowser()
public
override
void
buildchattool()
public
override
void
buildvideotool()
public
override
return
public
class
director}}
最後:正如你所看到的,乙個應用系統的構成都是由其子系統(從作業系統到相關軟體)組合(composite)而來的,所以建造者模式和組合模式有很多聯絡,通常它們都結合在一起使用。
關於渲染流水線的幾何變化
看了很多資料,總算是把乙個流水線中的幾何變化所涉及到的座標系統和座標含義搞清楚了。乙個流水線中包含六個座標系統 物體 模型 座標系統,世界座標系統,攝像機座標系統,裁剪座標系統 齊次座標體系統 規範立方體座標系統 cvv 螢幕座標系統。對應每個座標系統,有六種座標 物體 模型 座標系統座標,世界座標...
golang設計模式(二)流水線模式
產生資料 func makedata min,max int int return data 把輸入的資料通過通道傳遞出去 func echo nums int chan int close out return out func isprime v int b bool return true f...
流水線的幾個指標總結
在流水線這部分的理解中,需要再腦海中繪製一幅圖 橫軸是時間在流動,縱向表達的是指令的階段。這樣,斜著往右上角的同色的顏色塊是一條指令的執行。用一條平行於縱軸的線從0時開始往右移動,切到的塊數就是同一時刻在並行的段。如圖,分為四個階段,那麼前面四個階梯就是在效能爬坡階段,直到四個段可以同時並行,這樣以...