1. 程式人生 > >JAVA設計模式之——構建者設計模式

JAVA設計模式之——構建者設計模式

構建者設計模式:一個複雜物件的構建獨立於它的組成部分。

下面以一個內部類的方式解釋這種建立者設計模式:
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());
    }


}

執行結果:
這裡寫圖片描述