一、基礎(chǔ)概念
- 將?個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
- 它屬于創(chuàng)建類模式,?般來說,如果?個對象的構(gòu)建比較復(fù)雜,超出了構(gòu)造函數(shù)所能包含的范圍,就可以使用工廠模式和構(gòu)建者模式
- 工廠模式與構(gòu)建者模式的區(qū)別
- 工廠模式會產(chǎn)出?個完整的產(chǎn)品
- 構(gòu)建者模式應(yīng)用于更加復(fù)雜的對象的構(gòu)建,甚至只會構(gòu)建產(chǎn)品的?個部分
- 直白來說,就是使用多個簡單的對象?步?步構(gòu)建成?個復(fù)雜的對象
二、使用構(gòu)建者模式來生產(chǎn)一個 computer
-
主要步驟
- 將需要構(gòu)建的目標類分成多個部件(電腦可以分為主機、顯示器、鍵盤、音箱等部件)
- 創(chuàng)建構(gòu)建類
- 依次創(chuàng)建部件
- 將部件組裝成目標對象
-
定義 computer,并創(chuàng)建其構(gòu)建類 ComputerBuilder
package com.wujun.pojo; import lombok.Data; @Data public class Computer { /** * 顯示器 */ private String displayer; /** * 主機 */ private String mainUnit; /** * 鼠標 */ 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; } } } -
編寫測試類
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("鼠標") .installMainUnit("主機") .build(); System.out.println(computer); } } -
測試結(jié)果
Computer(displayer=顯示器, mainUnit=主機, mouse=鼠標, keyboard=鍵盤)