构建者模式

一、基础概念

  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=键盘)
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 设计...
    Jinbeen阅读 1,716评论 0 6
  • 建造者模式:将一个复杂对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示 使用建造者模式,客户端只需要...
    超级大鸡腿阅读 214评论 0 0
  • Builder模式 定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。 使用场景:(...
    ping_平阅读 314评论 0 2
  • 这个不错分享给大家,从扣上看到的,就转过来了 《电脑专业英语》 file [fail] n. 文件;v. 保存文...
    麦子先生R阅读 6,601评论 5 24
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,742评论 0 5