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

JAVA设计模式之——构建者设计模式

2016-07-30 19:41 429 查看
构建者设计模式:一个复杂对象的构建独立于它的组成部分。

下面以一个内部类的方式解释这种创建者设计模式:

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("1@1.net").setAge(10).build();
System.out.println(user.getUserName());
System.out.println(user.getNickName());
System.out.println(user.getEmail());
}

}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: