美文网首页
Java-构建器

Java-构建器

作者: BlackNeko | 来源:发表于2016-12-10 23:39 被阅读15次

需求:

  • 创建Bean实例时需要传入多个参数
  • 需要控制参数的访问权限,防止被其他使用者修改
  • 能够做参数有效性检查

构建器

public class BuilderModel {
    private String name;
    private int age;

    /**
     * 隐藏
     */
    private BuilderModel() {
    }

    private BuilderModel(Builder builder) {
        this.age = builder.age;
        this.name = builder.name;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    /**
     * 构建器
     */
    public static class Builder {
        private String name;
        private int age;

        /**
         * 开放构建器
         */
        public Builder() {

        }

        public Builder name(String name) {
            if (name == null) {
                throw new IllegalArgumentException("name must not be null");
            }
            this.name = name;
            return this;
        }

        public Builder age(int age) {
            if (age < 0) {
                throw new IllegalArgumentException("age must not below 0");
            }
            this.age = age;
            return this;
        }

        /**
         * 创建目标实例
         */
        public BuilderModel build() {
            return new BuilderModel(this);
        }
    }
}

构建

BuilderModel.Builder builder = new BuilderModel.Builder();
BuilderModel builderModel = builder.age(12).name("pepelu").build();

能够在age(),name()方法时进行参数校验与处理,设置默认值或者抛出IllegalArgumentException,不必等到build时再去判断参数有效性问题。

传参

Program program = new Program();
program.fuck(builderModel);

使用

private void fuck(BuilderModel builderModel) {
    System.out.println(builderModel.getAge());
    System.out.println(builderModel.getName());
}

类似于Android里面的AlertDialog,Facebook sdk里面的SharedLinkContent

相关文章

  • Java-构建器

    需求: 创建Bean实例时需要传入多个参数 需要控制参数的访问权限,防止被其他使用者修改 能够做参数有效性检查 构...

  • JAVA-线程-三-AbstractExecutorServic

    1. JAVA-线程-一-执行器Executor 2. JAVA-线程-二-ExecutorService 接口 ...

  • JAVA-线程-二-ExecutorService 接口

    1. JAVA-线程-一-执行器Executor 3. JAVA-线程-三-AbstractExecutorSer...

  • Hello Java

    目录 Java-基础(1/6) Java-对象(2/6) Java-核心库类 上(3/6) Java-核心库类下(...

  • Java-浅析Object类

    Java-浅析Object类 ++2016.7.19++byside @Java-浅析Object类 ======...

  • 六、JVM之编译于代码优化

    编译器优化 把.java->.class的过程 一、Javac编译器 1) 解析与填充符号表 1.词法、语法分析 ...

  • JAVA-线程-一-执行器Executor

    2. JAVA-线程-二-ExecutorService 接口 3. JAVA-线程-三-AbstractExec...

  • java-迭代器

    迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解...

  • java-构造器

    方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。

  • 索引构建

    1 索引构建 索引构建 建立倒排索引的过程,就是索引构建 索引器 构建索引的程序或者计算机,就是索引器 索引器需要...

网友评论

      本文标题:Java-构建器

      本文链接:https://www.haomeiwen.com/subject/poiumttx.html