Java设计模式之—Builder模式(建造者模式)
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
User类(错误示范)
public class User {
private String name;
private String id;
private int age;
private int sex;
//无参构造方法
public User() {
}
public User(String id,String name) {
this.id=id;
this.name=name;
}
/*
* 此处会出现错误,是构造方法的参数个数和参数类型一致导致
*/
// public User(String name,int sex) {
// this.name=name;
// this.sex=sex;
// }
}
Users类(构造者模式示例)
public class Users {
private String name;
private String id;
private int age;
private int sex;
// 私有化无参构造方法,防止外部使用构造器直接创建Users对象
private Users() {
}
public String getName() {
return name;
}
public String getId() {
return id;
}
public int getAge() {
return age;
}
public int getSex() {
return sex;
}
/*
* 将创建Users对象的任务交给Builder静态类,最后返回Users对象,实现创建Users对象的目的
*/
public static class Builder {
private String name;
private String id;
private int age;
private int sex;
public Builder() {
}
public String getName() {
return name;
}
public Builder setName(String name) {
this.name = name;
return this;
}
public String getId() {
return id;
}
public Builder setId(String id) {
this.id = id;
return this;
}
public int getAge() {
return age;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
public int getSex() {
return sex;
}
public Builder setSex(int sex) {
this.sex = sex;
return this;
}
/*
* 将创建返回的Builder对象重新装载成Users对象进行返回
*/
public Users build() {
Users users = new Users();
users.id = id;
users.name = name;
users.age = age;
users.sex = sex;
return users;
}
}
}
Clienter类(测试类)
public class Clienter {
public static void main(String[] args) {
Users user = new Users.Builder().setName("zhongyp").setAge(22).build();
Users users = new Users.Builder().setId("1").setSex(1).build();
System.out.println("Name:" + user.getName() + ",Age:" + user.getAge());//结果:Name:zhongyp,Age:22
System.out.println("Id:" + users.getId() + ",Sex:" + users.getSex());//结果:Id:1,Sex:1
}
}