「變化的流水線」 建造者模式

2022-01-12 04:51:07 字數 2358 閱讀 9502

在軟體系統中,有時面臨著乙個複雜物件的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。如何提供一種"封裝機制"來隔離出"各個部分"的變化,從而保持系統中的"穩定構建演算法"不隨需求的改變而改變?

建造者(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時開始往右移動,切到的塊數就是同一時刻在並行的段。如圖,分為四個階段,那麼前面四個階梯就是在效能爬坡階段,直到四個段可以同時並行,這樣以...