如何用 Java Builder 模式构建复杂对象

发布时间:2025-01-23 19:40:41 作者:小樊
来源:亿速云 阅读:100

在Java中,Builder模式是一种创建具有许多可选参数的对象的设计模式

  1. 创建一个静态内部类(Builder),该类包含与复杂对象相同的属性。
  2. 在Builder类中为每个属性创建setter方法。这些方法允许用户设置属性的值。
  3. 在Builder类中创建一个build()方法,该方法返回一个使用当前属性值构建的复杂对象实例。
  4. 在复杂对象的构造函数中,将Builder类的实例的属性值赋给复杂对象的相应属性。
  5. (可选)为Builder类添加一个名为of()的静态工厂方法,该方法接受一个复杂对象作为参数,并返回一个包含该对象所有属性的Builder实例。

以下是一个使用Builder模式构建复杂对象的示例:

public class Person {
    private String name;
    private int age;
    private String address;
    private String phoneNumber;

    private Person(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.address = builder.address;
        this.phoneNumber = builder.phoneNumber;
    }

    public static class Builder {
        private String name;
        private int age;
        private String address;
        private String phoneNumber;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        public Builder address(String address) {
            this.address = address;
            return this;
        }

        public Builder phoneNumber(String phoneNumber) {
            this.phoneNumber = phoneNumber;
            return this;
        }

        public Person build() {
            return new Person(this);
        }

        public static Builder of(Person person) {
            Builder builder = new Builder();
            builder.name = person.name;
            builder.age = person.age;
            builder.address = person.address;
            builder.phoneNumber = person.phoneNumber;
            return builder;
        }
    }
}

使用示例:

Person person = Person.Builder.of(new Person("John Doe"))
        .age(30)
        .address("123 Main St")
        .phoneNumber("555-1234")
        .build();

这个示例中,我们创建了一个名为Person的复杂对象,它具有四个属性:name、age、address和phoneNumber。我们使用Builder模式构建了这个对象,并通过链式调用setter方法设置属性值。最后,我们调用build()方法创建一个Person实例。

推荐阅读:
  1. 如何用代码分析Dialog中的列表,单选,及多选
  2. MVC如何用Aspose.Word导出Word报表

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java Builder 模式与工厂模式有什么区别

下一篇:Java Builder 模式有哪些优点

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》