構(gòu)建者模式

一、基礎(chǔ)概念

  1. 將?個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
  2. 它屬于創(chuàng)建類模式,?般來說,如果?個對象的構(gòu)建比較復(fù)雜,超出了構(gòu)造函數(shù)所能包含的范圍,就可以使用工廠模式和構(gòu)建者模式
  3. 工廠模式與構(gòu)建者模式的區(qū)別
    • 工廠模式會產(chǎn)出?個完整的產(chǎn)品
    • 構(gòu)建者模式應(yīng)用于更加復(fù)雜的對象的構(gòu)建,甚至只會構(gòu)建產(chǎn)品的?個部分
  4. 直白來說,就是使用多個簡單的對象?步?步構(gòu)建成?個復(fù)雜的對象

二、使用構(gòu)建者模式來生產(chǎn)一個 computer

  • 主要步驟
    1. 將需要構(gòu)建的目標類分成多個部件(電腦可以分為主機、顯示器、鍵盤、音箱等部件)
    2. 創(chuàng)建構(gòu)建類
    3. 依次創(chuàng)建部件
    4. 將部件組裝成目標對象
  • 定義 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=鍵盤)
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)。 設(shè)計...
    Jinbeen閱讀 1,847評論 0 6
  • 建造者模式:將一個復(fù)雜對象的構(gòu)建與它的表示分離,是的同樣的構(gòu)建過程可以創(chuàng)建不同的表示 使用建造者模式,客戶端只需要...
    超級大雞腿閱讀 288評論 0 0
  • Builder模式 定義:將一個復(fù)雜對象的構(gòu)建和它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。 使用場景:(...
    ping_平閱讀 381評論 0 2
  • 這個不錯分享給大家,從扣上看到的,就轉(zhuǎn)過來了 《電腦專業(yè)英語》 file [fail] n. 文件;v. 保存文...
    麥子先生R閱讀 7,110評論 5 24
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點、注意力、語言聯(lián)想、情景聯(lián)想 觀點: 1.統(tǒng)計學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會...
    Jenaral閱讀 5,982評論 0 5

友情鏈接更多精彩內(nèi)容