利用构建器创建对象

Posted lishuaiqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用构建器创建对象相关的知识,希望对你有一定的参考价值。

1. 在创建类的时候,如果参数过多,我们直接使用构建起创建方法的时候会不知道具体参数代表什么类型.比如:

User user = new User("123","123","123","123","123");

这样不知道具体的参数代表什么,不容易知道要创建什么类型的User,所以我们可以直接使用构建器创建对象.

 

2.比如这样:

User user = new User.Builder().address("123").username("123").build();

这样的话我们就可以直观的知道要创建什么字段.具体代码如下:

package demo01;

public class User {
    private String username;
    private String password;
    private String nickname;
    private String address;
    private String email;

    public static class Builder{
        private String username = "";
        private String password = "";
        private String nickname = "";
        private String address = "";
        private String email = "";
        
        public Builder username(String username) {
            this.username = username;
            return this;
        }
        
        public Builder password(String password) {
            this.password = password;
            return this;
        }
        
        public Builder nickname(String nickname) {
            this.nickname = nickname;
            return this;
        }
        
        public Builder address(String address) {
            this.address = address;
            return this;
        }
        
        public Builder email(String email) {
            this.email = email;
            return this;
        }
        
        public User build() {
            return new User(this);
        }
    }
    
    private User(Builder builder) {
        this.username = builder.username;
        this.password = builder.password;
        this.nickname = builder.nickname;
        this.email = builder.email;
        this.address = builder.address;
    }
    
    public static void main(String[] args) {
        User user = new User.Builder().address("123").username("123").build();
    }

}

定义了一个内部类,并且把构造函数private化,最后调用build()的方法在内部赋值.

这样我们就可以直接使用Builder创建对象.

以上是关于利用构建器创建对象的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

java利用构建器来创建实例而不是构造器

OpenGLES3.0创建着色器步骤

利用查询构建器创建BOM

Java设计模式:Builder(构建器)模式

Three.js 中的自定义纹理着色器