利用Builder方式创建对象示例代码
 更新时间:2018年11月20日 10:46:02   作者:奔跑吧李博  

这篇文章主要给大家介绍了关于利用Builder方式创建对象的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言
在创建对象需要初始化数据,数据参数不容易区别,可传可不传的时候,可以考虑使用Builder建造方法创建。每每当看到别人写的用Bulder方式来调用,就觉得so cool,那就自己也来用Builder方式创建对象吧。
下面话不多说了,来一起看看详细的介绍吧
现在要录入一系列人员的基本信息的示例:

创建Person类

public class Person {
private String name;
private int age;
private float height;
private float weight;

public Person(String name, int age, float height, float weight) {
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public float getHeight() {
return height;
}

public void setHeight(float height) {
this.height = height;
}

public float getWeight() {
return weight;
}

public void setWeight(float weight) {
this.weight = weight;
}
}

那么创建对象就是这样,后面参数不容易看出表示的是什么,可读性不强

new Person(“冯提莫”,18,150,43);
new Person(“温婉”,17,164,48);

用Builder模式进行改造

创建一个Builder类,属性和Person类一样,加上SetXxx()方法

static class Builder{
private String name;
private int age;
private float height;
private float weight;

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public void setHeight(float height) {
this.height = height;
}

public void setWeight(float weight) {
this.weight = weight;
}
}

将Person的构造方法改为传入Builder对象,将Builder对象的属性值都赋予Person对象

public Person(Builder builder){
this.name = builder.name;
this.age = builder.age;
this.height = builder.height;
this.weight = builder.weight;
}

改造Builder类,关键步骤是将各个set方法返回Builder类对象,这样就能继续愉快地连续调用set方法了,最后调用build()创建方法返回Person对象。

static class Builder{
private String name;
private int age;
private float height;
private float weight;

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

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

public Builder setHeight(float height) {
this.height = height;
return this;
}

public Builder setWeight(float weight) {
this.weight = weight;
return this;
}

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

将各个set方法的返回值类型改为Builder,每次都返回builder对象,这样才能将set方法实现连续的链式调用。

build()方法创建一个person对象,会调用Person的带参构造方法,将builder对象的属性依次赋予person对象。person中的属性值就是链式调用set方法的各个值。
使用Builder模式创建Person对象,明显看出代码可读性大大增强。注:Builder创建方式通常是在创建的对象少的情况下使用。

Person person = new Person.Builder()
.setName(“莉哥”)
.setAge(20)
.setHeight(162)
.setWeight(45)
.build();

总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对华域联盟的支持。

您可能感兴趣的文章:ASP.NET(C#) String, StringBuilder 与 StringWriter性能比较asp.net StringBuilder的用法 实例代码在C#及.NET框架中使用StringBuilder类操作字符串的技巧.NET中StringBuilder用法实例分析详解.NET中string与StringBuilder在字符串拼接功能上的比较C#中StringBuilder类的使用总结C#中StringBuilder用法以及和String的区别分析

.net
builder
创建对象

相关文章
aspx中的mysql操作类sqldatasource使用示例分享服务器装了mysql odbc驱动,想在那个iis上操作另一个服务器的mysql,找到个.net的sqldatasource类可以操作mysql,下在把使用方法分享一下 2014-01-01
ASP.NET MVC4中使用Html.DropDownListFor的方法示例这篇文章主要介绍了ASP.NET MVC4中使用Html.DropDownListFor的方法,结合实例形式分析了控制器数据源及Html.DropDownListFor显示操作的相关技巧,需要的朋友可以参考下 2016-08-08
SqlCommandBuilder类批量更新excel或者CSV数据的方法这篇文章主要介绍了SqlCommandBuilder类批量更新excel或者CSV数据的方法,需要的朋友可以参考下 2015-10-10
php使用socket编程示例这篇文章主要介绍了php使用socket编程的示例,大家参考使用吧 2014-01-01
在.NET使用JSON作为数据交换格式实例演示JSON(JavaScript Object Notation)是一种轻量级轻量级的数据交换格式,并且它独立于编程语言,接下来为大家介绍下使用JSON作为数据交换格式在.net中的应用 2013-03-03
.net 像hao123的快捷邮箱登陆的实现代码.net实现的像hao123的快捷邮箱登陆的代码,需要的朋友可以参考下。 2010-03-03
MVC+EasyUI+三层架构简单权限管理系统这篇文章主要为大家详细介绍了MVC+EasyUI+三层架构简单权限管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2016-07-07
asp.net 实现静态页面累加访问量的三种方式asp.net 实现静态页面累加访问量的实现代码,需要的朋友可以参考下。 2010-03-03
asp.net使用FCK编辑器中的分页符实现长文章分页功能这篇文章主要介绍了asp.net使用FCK编辑器中的分页符实现长文章分页功能,涉及asp.net字符串及分页操作的相关技巧,需要的朋友可以参考下 2016-06-06
ASP.NET动态增加HTML元素的方法实例小结这篇文章主要介绍了ASP.NET动态增加HTML元素的方法,结合实例形式总结分析了asp.net针对样式、Meta、js等元素动态增加相关操作技巧,需要的朋友可以参考下 2017-01-01

最新评论

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。