构建者模式

一、基础概念

  1. 将⼀个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
  2. 它属于创建类模式,⼀般来说,如果⼀个对象的构建比较复杂,超出了构造函数所能包含的范围,就可以使用工厂模式和构建者模式
  3. 工厂模式与构建者模式的区别
    • 工厂模式会产出⼀个完整的产品
    • 构建者模式应用于更加复杂的对象的构建,甚至只会构建产品的⼀个部分
  4. 直白来说,就是使用多个简单的对象⼀步⼀步构建成⼀个复杂的对象

二、使用构建者模式来生产一个 computer

  • 主要步骤
    1. 将需要构建的目标类分成多个部件(电脑可以分为主机、显示器、键盘、音箱等部件)
    2. 创建构建类
    3. 依次创建部件
    4. 将部件组装成目标对象
  • 定义 computer,并创建其构建类 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);
        }
    }
    
  • 测试结果
    Computer(displayer=显示器, mainUnit=主机, mouse=鼠标, keyboard=键盘)
    

你可能感兴趣的:(构建者模式)