摘要:而這個組裝主機的過程就是建造者模式最真實的寫照。建造者都是獨立的,我們可以對建造過程進行優化和細化,不會對其他的模塊產生影響。建造者模式和工廠模式十分相像,但建造者模式關注的是配件和裝配工藝順序,而工廠模式的中心是對象的創建
前言
最近絕地逃生這個游戲大火,好多朋友為了吃雞,都會自己組裝一個高配主機來支持自己打游戲 。而這個組裝主機的過程就是建造者模式最真實的寫照....~。~
什么是建造者模式將一個復雜對象的構建與它的表示分離,使得同樣的構建工程可以創建不同的表示。UML類圖
Product:要構造的復雜的對象
Builder:定義一個抽象構造接口,規范產品每個部件的構造,并不涉及具體實現
ConcreteBuilder:真正的構造者,對產品每個部件的構造給出具體實現,并提供該產品的實例
Director:作為一個導演,它的職責就是調用ConcreteBuilder,讓產品的部件按照我們指定的順序去設置,然后返回我們的實例
代碼分析public class Computer { private String cpu; //主板 private String mainboard; //內存 private String memory; //顯卡 private String graphicsCard; //電源 private String powerSource; public String getCpu() { return cpu; } public void setCpu(String cpu) { this.cpu = cpu; } public String getMainboard() { return mainboard; } public void setMainboard(String mainboard) { this.mainboard = mainboard; } public String getMemory() { return memory; } public void setMemory(String memory) { this.memory = memory; } public String getGraphicsCard() { return graphicsCard; } public void setGraphicsCard(String graphicsCard) { this.graphicsCard = graphicsCard; } public String getPowerSource() { return powerSource; } public void setPowerSource(String powerSource) { this.powerSource = powerSource; } @Override public String toString() { return "Computer{" + "cpu="" + cpu + """ + ", mainboard="" + mainboard + """ + ", memory="" + memory + """ + ", graphicsCard="" + graphicsCard + """ + ", powerSource="" + powerSource + """ + "}"; } }
public interface ComputerBuilder { void buildCpu(); void buildMainboard(); void buildMemory(); void buildGraphicsCard(); void buildPowerSource(); Computer build(); }
public class ConcreteComputerBuilder implements ComputerBuilder { private Computer computer = new Computer(); @Override public void buildCpu() { computer.setCpu("intel 7700"); } @Override public void buildMainboard() { computer.setMainboard("華碩b5"); } @Override public void buildMemory() { computer.setMemory("海盜船16g內存條雙交火"); } @Override public void buildGraphicsCard() { computer.setGraphicsCard("n卡1080"); } @Override public void buildPowerSource() { computer.setPowerSource("安鈦克全模組金牌額定500w"); } @Override public Computer build() { return computer; } }
public class ComputerDirector { private ComputerBuilder builder = new ConcreteComputerBuilder(); public Computer getComputer(){ builder.buildCpu(); builder.buildGraphicsCard(); builder.buildMainboard(); builder.buildMemory(); builder.buildPowerSource(); return builder.build(); } }
public class Client { public static void main(String[] args) { ComputerDirector computerDirector = new ComputerDirector(); Computer computer = computerDirector.getComputer(); System.out.println("這個電腦的配置為:"+computer.toString()); } } 測試結果:這個電腦的配置為:Computer{cpu="intel 7700", mainboard="華碩b5", memory="海盜船16g內存條雙交火", graphicsCard="n卡1080", powerSource="安鈦克全模組金牌額定500w"}使用場景
需要產生的對象有復雜的結構
在對象創建過程中會使用到系統中的一些其它對象,這些對象在產品對象的創建過程中不易得到。
相同的方法,不同的執行順序產生不同的結果。
或許會有人對第三個不是特別理解,因為在裝機這個業務體現的不是特別明顯。我們不妨換個場景考慮,煮湯都有特定的工序,什么時候加水,先加什么調料后加什么調料,如果你加的順序不一樣,做出的湯的味道都會有差別,對于此種場景可以使用該模式
總結使用建造者模式,可以屏蔽產品內部實現的細節,直接生產產品即可。建造者都是獨立的,我們可以對建造過程進行優化和細化,不會對其他的模塊產生影響。建造者模式和工廠模式十分相像,但建造者模式關注的是配件和裝配工藝(順序),而工廠模式的中心是對象的創建.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70696.html
摘要:參考文章設計模式之建造者模式一什么是建造者模式建造者模式是將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 參考文章:java設計模式之建造者模式 一、什么是建造者模式建造者模式:是將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。工廠類模式提供的是創建單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來創建復合對象,所謂...
摘要:建造者模式實現建造者模式實現創建抽象建造者類創建具體建造者類。建造者模式使用場景建造者模式使用場景相同的方法,不同的執行順序,產生不同的事件結果時,可以采用建造者模式。1、什么是建造者模式 Separate the construction of a complex object from its representation so that the same constructi...
1、什么是建造者模式Separate the construction of a complex object from its representation so that the same construction process can create different representations.將一個復雜對象的構建與它的表示分離, 使得同樣的構建過程可以創建不同的表示。 說人話:將構...
摘要:本質建造者設計模式分離了對象子組件的構造過程和組裝過程,實現了構建與組裝的解耦,不同的構建器相同的組裝順序以及相同的構建器不同的組裝順序都可以創建出不同的對象,使得構建與組裝充分解耦,進而實現構建算法與組裝算法的解耦,從而實現更好的復用。 這是設計模式系列的第二篇——建造者設計模式,我希望推送的文章是一個系列的,盡量保持一樣的寫作風格,盡量把我理解的闡述清楚,關于建造者設計模式主要從以...
摘要:建造者實現抽象類的所有未實現的方法,具體來說一般是兩項任務組建產品返回組建好的產品。 0x01.定義與類型 定義:將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 用戶只需指定需要建造的類型就可以得到他們,建造過程及細節不需要知道 類型:創建型 實現建造模式的兩種方式 1.抽象建造者 UML: showImg(https://segmentfault.co...
閱讀 1295·2021-11-23 09:51
閱讀 3399·2021-09-06 15:00
閱讀 986·2021-08-16 10:57
閱讀 1370·2019-08-30 12:46
閱讀 932·2019-08-29 12:22
閱讀 1602·2019-08-29 11:07
閱讀 3146·2019-08-26 11:23
閱讀 2979·2019-08-23 15:14