設計模式(三)建造者模式

2021-10-04 05:06:08 字數 1731 閱讀 6426

定義

建造者模式(builder),將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

簡介

建造者模式(builder)是建立乙個複雜物件的建立型模式,將構建複雜物件的過程和它的部件解耦,使得構建過程和部件的表示分離開來。 

例如我們要diy乙個台式電腦電腦,我們找到diy商家,我們可以要求這台電腦的cpu或者主機板或者其他的部件都是什麼牌子的什麼配置的,這些部件是我們可以根據我們的需求來變化的,但是這些部件組裝成電腦的過程是一樣的,我們不需要知道這些部件是怎樣組裝成電腦的,我們只需要提供部件的牌子和配置就可以了。對於這種情況我們就可以採用建造者模式,將部件和組裝過程分離,使得構建過程和部件都可以自由拓展,兩者之間的耦合也降到最低。

建造者模式結構圖

這裡我們就用diy組裝電腦的例子來實現一下建造者模式。

建立產品類

我要組裝一台電腦,電腦被抽象為computer類,它有三個部件:cpu 、主機板和記憶體。並在裡面提供了三個方法分別用來設定cpu 、主機板和記憶體:

public class computer 

public void setmmainboard(string mmainboard)

public void setmram(string mram)

}

建立builder類規範產品的組建商家組裝電腦有一套組裝方法的模版,就是乙個抽象的builder類,裡面提供了安裝cpu、主機板和記憶體的方法,以及組裝成電腦的create方法:

public abstract class builder
商家實現了抽象的builder類,mooncomputerbuilder類用於組裝電腦:

public class mooncomputerbuilder extends builder 

@override

public void buildmainboard(string mainboard)

@override

public void buildram(string ram)

@override

public computer create()

}

用dirextor指揮者類來統一組裝過程商家的指揮者類用來規範組裝電腦的流程規範,先安裝主機板,再安裝cpu,最後安裝記憶體並組裝成電腦:

public class direcror 

public computer createcomputer(string cpu,string mainboard,string ram)

}

客戶端呼叫指揮者類最後商家用指揮者類組裝電腦。我們只需要提供我們想要的cpu,主機板和記憶體就可以了,至於商家怎樣組裝的電腦我們無需知道。

public class creatcomputer 

}

使用場景優缺點優點:缺點:

設計模式(三 建造者模式)

1.建造者模式的作用 1.分離了物件子元件的構建和裝配,構建由builder負責,裝配由director負責。從而可以構 造出複雜的物件。這個模式適用於 某個物件的構建過程複雜的情況下使用。2.由於實現了構建和裝配的解耦。不同的構建器,相同的裝配,也可以做出不同的物件 相同的構建器,不同的裝配順序也...

設計模式(三)建造者模式(建立型)

定義 將乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。使用場景 建立的產品有複雜的內部結構,且建立的產品有較多的共同點,其組成部分相似。隔離複雜物件的建立,使得相同的過程可以建立不同的產品。與抽象工廠的區別 在建造者模式裡,有個指導者,由指導者來管理創造者,使用者是與指導...

C 設計模式(三)建造著模式

class test public class test1 public void show public class test2 public test1 getitem public class director 電腦類 public class computer public void sho...