【设计模式】【创建型5-4】【建造者模式】

文章目录

建造者模式

可以在不同的构建过程中使用相同的建造者。

builder 链式调用创建对象就是建造者模式的使用

示例代码

java 复制代码
public class Human {
    private int age;
    private String name;
    private int sex;
    @Override
    public String toString() {
        return "Human{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                '}';
    }
    public static void main(String[] args) {
        Human wangshilei = HumanBuilder.aHuman().withName("wangshilei").withAge(100).withSex(1).build();
        System.out.println(wangshilei);
    }
    public static final class HumanBuilder {
        private int age;
        private String name;
        private int sex;
        private HumanBuilder() {
        }
        public static HumanBuilder aHuman() {
            return new HumanBuilder();
        }
        public HumanBuilder withAge(int age) {
            this.age = age;
            return this;
        }
        public HumanBuilder withName(String name) {
            this.name = name;
            return this;
        }
        public HumanBuilder withSex(int sex) {
            this.sex = sex;
            return this;
        }
        public Human build() {
            Human human = new Human();
            human.age = this.age;
            human.sex = this.sex;
            human.name = this.name;
            return human;
        }
    }
}

//输出  Human{age=100, name='wangshilei', sex=1}

如上 就是实际的使用

构建复杂对象的时候使用 提高代码的可读性

我们可以隐藏构造细节。给外部提供简单的接口就能构建对象

相关推荐
青山木2 分钟前
Hot 100 --- 划分字母区间
java·数据结构·算法·leetcode·贪心算法
Zzzzmo_5 分钟前
SpringBoot 配置文件
java·spring boot
君顾110 分钟前
外卖CPS小程序开发实战指南:从零到上线的完整流程
java·开发语言·外卖
無a伟10 分钟前
RabbitMq高级特性:消息确认,持久化,重试机制
java·分布式·rabbitmq
流烟默20 分钟前
xxl-job 接入 Spring 的两种方式:手动装配与自动装配(含 initMethod 双启动踩坑实录)
java·spring·xxl-job
鹅城剑仙21 分钟前
Spring Boot 3 全局异常处理与统一响应封装进阶实战
java·spring boot·后端
橘子汽水16834 分钟前
Leetcode 208,207实现Trie前缀树,课程表
java·数据结构·算法·leetcode
tryxr37 分钟前
Chat2Excel 文件服务模块剩余功能开发
java·服务器·windows·java项目·文件服务
张小姐的猫39 分钟前
【AI大模型接入SDK】 —— Ollama本地接入Deepseek
java·linux·开发语言·网络·c++·人工智能
谢亮_vipxieliang40 分钟前
ValidX与Maven/Gradle集成配置指南
java·spring boot·spring·maven·hibernate