JAVA設計模式之——構建者設計模式
阿新 • • 發佈:2019-02-20
構建者設計模式:一個複雜物件的構建獨立於它的組成部分。
下面以一個內部類的方式解釋這種建立者設計模式:
User類:
package com.xiaofeng;
/**
* Project :Danli
* Created : XiaoFeng1015
* Date : 2016/7/30
*/
// 構件者模式
public class User {
private String password;
private String username;
private String nickName;
private int age;
private String email;
public User(String password, String username) {
this.password = password;
this.username = username;
}
// 構建者模式,私有的構造方法,在內部類中可以使用
private User(String password, String username, String nickName, int age, String email) {
this .password = password;
this.username = username;
this.nickName = nickName;
this.age = age;
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return username;
}
public void setUserName(String userword) {
this.username = userword;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
// 靜態內部類
// 使用方式,和普通類一樣
// 1、靜態內部類可以使用外部類中所有的靜態屬性和方法。包括私有的;
// 2、靜態內部類還可以使用外部類中所有的構造方法。包括私有的。
public static class Builder {
private String password;
private String username;
private String nickName;
private int age;
private String email;
public Builder(String password, String username) {
this.password = password;
this.username = username;
}
// set方法返回一個Builder的物件,用來以後對User物件的屬性的擴充套件。
public Builder setPassword(String password) {
this.password = password;
return this;
}
public Builder setNickName(String nickName) {
this.nickName = nickName;
return this;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
public Builder setEmail(String email) {
this.email = email;
return this;
}
public User build() {
return new User(password, username, nickName, age, email);
}
}
}
測試類Test:
package com.xiaofeng;
import com.xiaofeng.User.Builder;
/**
* Project :Danli
* Created : XiaoFeng1015
* Date : 2016/7/30
*/
public class Test02 {
public static void main(String[] args) {
User user = new Builder("user", "123456").setEmail("[email protected]").setAge(10).build();
System.out.println(user.getUserName());
System.out.println(user.getNickName());
System.out.println(user.getEmail());
}
}
執行結果: