【设计模式】【创建型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}

如上 就是实际的使用

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

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

相关推荐
Elastic 中国社区官方博客10 分钟前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn18823 分钟前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn1 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
y1su1 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划
我命由我123452 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
苜蓿muxu3 小时前
Java 字符串拼接:+、StringBuilder、StringBuffer的区别
java
摇滚侠3 小时前
《Java并发编程之美》第 4 章 Java 并发包中原子操作类原理剖析 阅读笔记 7
java·笔记·python
旋律4144 小时前
同义方法区别(增加类与删除类)
java·后端
学到老活到老4 小时前
方法执行完了,对象为什么还占着内存?
java·jvm