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

如上 就是实际的使用

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

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

相关推荐
Whisper_Sy4 小时前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 网络状态实现
android·java·开发语言·javascript·网络·flutter·php
乂爻yiyao4 小时前
1.1 JVM 内存区域划分
java·jvm
没有bug.的程序员5 小时前
Spring Cloud Eureka:注册中心高可用配置与故障转移实战
java·spring·spring cloud·eureka·注册中心
CryptoRzz5 小时前
如何高效接入日本股市实时数据?StockTV API 对接实战指南
java·python·kafka·区块链·状态模式·百度小程序
码农水水5 小时前
中国邮政Java面试被问:容器镜像的多阶段构建和优化
java·linux·开发语言·数据库·mysql·面试·php
若鱼19195 小时前
SpringBoot4.0新特性-BeanRegistrar
java·spring
好好研究6 小时前
SpringBoot - yml配置文件
java·spring boot·spring
学海无涯书山有路6 小时前
Android FragmentContainerView 新手详解(Java 版)
android·java·开发语言
XiYang-DING7 小时前
【Java SE】数据类型、变量、类型转换、运算符以及程序逻辑控制
java·开发语言
闻哥7 小时前
Redis 避坑指南:从命令到主从的全链路踩坑实录
java·数据库·redis·缓存·面试·springboot