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

如上 就是实际的使用

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

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

相关推荐
qq_2518364579 分钟前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
LayZhangStrive14 分钟前
JUC相关的函数、注解、变量杂记
java·面试·多线程·juc
未秃头的程序猿19 分钟前
给公司做了个AI客服Agent,用的Spring AI 1.0,3天上线领导拍板了
java·后端·ai编程
曹牧22 分钟前
Eclipse 批量文本替换
java·ide·eclipse
程序员清风33 分钟前
OpenAI官方发布最新提示词技巧!
java·后端·面试
梅头脑38 分钟前
写了3年CRUD,volatile和synchronized的区别还是答不清——直到我画出了这张三性两锁边界图
java
暮暮祈安41 分钟前
Celery 新手入门指南
java·数据库·python·flask·httpx
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第190题】【08_Kafka篇】第6题:消息队列有什么作用?
java·kafka·消息队列·系统设计·分布式架构
蚰蜒螟1 小时前
一次 Spring AOP 与定时任务引发的死锁排查实录
java·spring·firefox
TeamDev1 小时前
JxBrowser 9.3.1 版本发布啦!
java·前端·javascript·c#·混合应用·jxbrowser·浏览器控件