Builder 优雅的链式调用来实现实例化对象

1.  首先在实体类中,构造一个Builder内部类,由Builder来完成Person的属性赋值,并最终执行build来完成Person的实例化

package com.example.entity;

/**
* @author: GuanBin
* @date: Created in 下午7:20 2019/5/26
*/
public class Person {
private final String name;
private String location;
private String job;
private String habit; private Person(Builder builder) {
name = builder.name;
location = builder.location;
job = builder.job;
habit = builder.habit;
} public static final class Builder {
private String name;
private String location;
private String job;
private String habit; public Builder() {
} public Builder name(String name) {
this.name = name;
return this;
} public Builder location(String location) {
this.location = location;
return this;
} public Builder job(String job) {
this.job = job;
return this;
} public Builder habit(String habit) {
this.habit = habit;
return this;
} public Person build() {
return new Person(this);
}
}
}

2.链式调用进行赋值

package com.example.java8test.bulider;

import com.example.entity.Person;

/**
* @author: GuanBin
* @date: Created in 下午7:30 2019/5/26
*/
public class BuliderTest { public static void main(String[] args) { Person person = new Person.Builder()
.name("guanbin")
.location("shanghai")
.habit("football")
.job("it")
.build(); }
}

3. 内部类的代码,可以由InnerBuilder插件实现,减少人工写代码的工作量

java - Builder模式实例化对象的更多相关文章

  1. Java Builder模式 体验(二)

       在上篇文章中,对Java Builder模式的使用体验主要是从Builder对构造器改造方面的优秀特性来说的,感觉并没有从Java Builder模式本身的功能和作用去写,因此决定再从Build ...

  2. Java设计模式--Java Builder模式

    1.Java Builder模式主要是用一个内部类去实例化一个对象,避免一个类出现过多构造函数,而且构造函数如果出现默认参数的话,很容易出错. public Person(String name) P ...

  3. Java中创建实例化对象的几种方式

    Java中创建实例化对象有哪些方式? ①最常见的创建对象方法,使用new语句创建一个对象.②通过工厂方法返回对象,例:String s =String.valueOf().(工厂方法涉及到框架)③动用 ...

  4. Java Builder 模式,你搞明白了么?

    Builder 模式定义 Builder 模式中文叫作建造者模式,又叫生成器模式,它属于对象创建型模式,是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式是一步一步 ...

  5. JAVA Builder模式构建MAP/LIST的示例

    我们在构建一个MAP时,要不停的调用put,有时候看着觉得很麻烦,刚好,看了下builder模式,觉得这思路不错,于是乎,照着用builder模式写了一个构建MAP的示例,代码如下: import j ...

  6. Java Builder 模式,你搞懂了么?

    加油.png 前言:最近闲来无事的时候想着看看一些平常用的三方库源码,没想到看了之后才知道直接撸源码好伤身体,一般设计优秀的开源库都会涉及很多的设计模式,就比如 android 开发使用频繁的 okH ...

  7. java工厂模式实例化class

    import java.io.*; import java.util.*; interface fruit { public abstract void eat(); } class Apple im ...

  8. java Builder模式创建不可变类

    package com.geostar.gfstack.operationcenter.logger.manager.common; /** * Created by Nihaorz on 2017/ ...

  9. java实例化对象的方式

    一.Java中创建(实例化)对象的五种方式  1.用new语句直接创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); ...

随机推荐

  1. 1.node 在node中 进行包与包之间函数的调用 module.exports

    本文参考学习了廖雪峰的大作 模块 但是廖的文章只模块只有一个函数,在此演示一个模块中有两个函数,在另外一个函数中是如何去调用的 //hello.js包中的内容'use strict'; var s=' ...

  2. Linux性能测试 /proc目录

    /proc文件系统 - 各种内核信息/proc目录下文件提供了很多不同硬件设备和内核的详细信息.更多详情参见Linux kernel /proc.一般/proc例如: [root@SM155 proc ...

  3. c语言指针详细解释

    指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最基本的风格之中的一个.利用指针变量能够表示各种数据结构: 能非常方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高 ...

  4. 系统引导文件之 boot.ini(有很多参数)

    Windows NT类的操作系统,也就是Windows NT/2000/XP中,有一个特殊文件,也就是“BOOT.INI”文件,这个文件会很轻松地按照我们的需求设置好多重启动系统. “BOOT.INI ...

  5. SQL基础 关键字

    SQL语言类型 数据定义:create/alter/drop table/trigger/index/function/存储过程/约束/…数据操纵:select/update/insert/delet ...

  6. .net core 2.0 读取配置文件

    1.引用Microsoft.Extensions.Configuration2.在Startup中注入服务 public static IConfiguration Configuration { g ...

  7. WPF DataGrid 的RowDetailsTemplate的使用

    <Window x:Class="DataGridExam.DataGridRowDetailsExam"        xmlns="http://schemas ...

  8. 常用的shell(备份数据库、备份网站、切割访问日志)

    备份网站程序 #!/bin/bash /bin/tar czf /mnt/backup_website/web_$(date +%Y%m%d_%H%M%S).gz.tar /mnt/wwwroot/w ...

  9. winform实现DataGridView全选

    之前写过,一时想不起来就在网上找了一些.结果感觉好麻烦.于是就自己打开之前做过的功能.找到源码. private void CheckDatabasexuan() { DataGridViewChec ...

  10. wpf自定义带刻度的柱状图控件

    效果图: 主要代码xaml: <UserControl x:Class="INSControls._01Conning.Steer.ConningSpeedBar" xmln ...