一、基礎(chǔ)概念
- 將?個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離序仙,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
- 它屬于創(chuàng)建類模式殖属,?般來說榛瓮,如果?個(gè)對(duì)象的構(gòu)建比較復(fù)雜,超出了構(gòu)造函數(shù)所能包含的范圍喉悴,就可以使用工廠模式和構(gòu)建者模式
- 工廠模式與構(gòu)建者模式的區(qū)別
- 工廠模式會(huì)產(chǎn)出?個(gè)完整的產(chǎn)品
- 構(gòu)建者模式應(yīng)用于更加復(fù)雜的對(duì)象的構(gòu)建棱貌,甚至只會(huì)構(gòu)建產(chǎn)品的?個(gè)部分
- 直白來說,就是使用多個(gè)簡(jiǎn)單的對(duì)象?步?步構(gòu)建成?個(gè)復(fù)雜的對(duì)象
二粥惧、使用構(gòu)建者模式來生產(chǎn)一個(gè) computer
-
主要步驟
- 將需要構(gòu)建的目標(biāo)類分成多個(gè)部件(電腦可以分為主機(jī)键畴、顯示器最盅、鍵盤突雪、音箱等部件)
- 創(chuàng)建構(gòu)建類
- 依次創(chuàng)建部件
- 將部件組裝成目標(biāo)對(duì)象
-
定義 computer起惕,并創(chuàng)建其構(gòu)建類 ComputerBuilder
package com.wujun.pojo; import lombok.Data; @Data public class Computer { /** * 顯示器 */ private String displayer; /** * 主機(jī) */ private String mainUnit; /** * 鼠標(biāo) */ private String mouse; /** * 鍵盤 */ private String keyboard; public static class ComputerBuilder { private Computer computer = new Computer(); public ComputerBuilder installDisplayer(String displayer) { computer.setDisplayer(displayer); return this; } public ComputerBuilder installMainUnit(String mainUnit) { computer.setMainUnit(mainUnit); return this; } public ComputerBuilder installMouse(String mouse) { computer.setMouse(mouse); return this; } public ComputerBuilder installKeyboard(String keyboard) { computer.setKeyboard(keyboard); return this; } public Computer build() { return computer; } } }
-
編寫測(cè)試類
package com.wujun.pojo; public class ComputerTest { public static void main(String[] args) { Computer.ComputerBuilder computerBuilder = new Computer.ComputerBuilder(); Computer computer = computerBuilder .installDisplayer("顯示器") .installKeyboard("鍵盤") .installMouse("鼠標(biāo)") .installMainUnit("主機(jī)") .build(); System.out.println(computer); } }
-
測(cè)試結(jié)果
Computer(displayer=顯示器, mainUnit=主機(jī), mouse=鼠標(biāo), keyboard=鍵盤)