您的位置:首页 > 编程语言 > Java开发

java构造对象的方式

2018-01-03 11:39 106 查看
开发项目中,创建对象时,总是实例化对象,采用对象.set**的方法,当碰到对象的字段很多时,写的代码重复性高,所以总结了创建对象的几种方式,个人偏爱第一种

一种:构造器模式

例子(共3步):

1.构造一个Person对象,里面的字段name名字(必传参数),学号(必传参数),年龄(选传参数),班级(选 传参数)。

2.构建一个Builder内部类,Person类的必传参数作为Builder内部类有参构造函数的参数,其余Person类的 选传参数,在Builder内部类中单独构造。

3.构建Person类的有参构造函数(参数为内部类Builer)。

代码如下:

/**
* @Description: model类里面采用Builder   构造器 构造对象
* @author:Dxh
* @date:2018年1月2日
*/
public class Person {

/**
* 用户名  必传参数
*/
private String name;

/**
* 学号    必传参数
*/
private Long classId;

/**
* 年龄     选传参数
*/
private Integer age;

/**
* 班级     选传参数
*/
private String grade;

//内部类用于构建对象
public static class Builder{

private String name;
private Long classId;
private Integer age;
private String grade;

public Builder(String name, Long classId){
this.name = name;
this.classId = classId;
}

public Builder age(Integer ageVal){
age = ageVal;
return this;
}

public Builder grade(String gradeVal){
grade = gradeVal;
return this;
}

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

}

//构造方法构造必传参数
public Person(Builder builder){
name = builder.name;
classId = builder.classId;
age = builder.age;
grade = builder.grade;
}

@Override
public String toString() {
return "Person [name=" + name + ", classId=" + classId + ", age=" + age + ", grade=" + grade + "]";
}

}


客户端代码如下:

/**
* @Description: 客户端使用构造器 构造对象
* @author:Dxh
* @date:2018年1月3日
*/
public class Client {

public static void main(String[] args) {
Person person = new Person.Builder("笨笨", 201405060321L).age(8).grade("物联网1班").build();
System.out.println(person.toString());
}

}


此时输出为:

Person [name=笨笨, classId=201405060321, age=8, grade=物联网]

此时可能会有疑问,我要获取对象的字段怎么办?

当然在Person类中实现get,set方法,因为构造器,只是提供一种构造对象的方法,减少set**字段时的代码量。

第二种方式:

在Person类中对每个字段实现get,set方法,之后在实例化对象时,单独字段采用set**的方法。

第三种方式:

在Person类中的构造函数中使用有参构造。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 构造器