1. 1. 빌더패턴이란?
빌더패턴이란 빌더 클래스는 인스턴스를 생성자를 통해 직접 생성하지 않고, 빌더라는 내부 클래스를 통해 간접적으로 생성하게 하는 패턴이다.
생성자가 많은 클래스가 있다면 빌더패턴을 고려해 보는 것이 좋다.
아래 나오는 고전적 방법2를 이용해도 되나 가독성의 문제를 고려하여 빌드 패턴을 고려해도 좋다.
사실 가독성은 개인차가 있는 것 같다.
굳이 시간이 없다면 빌더 패턴을 쓰지 않아도 되고 고전적 방법2를 써도된다.
2. 2. 고전적 방법1. 점진적 생성자를 이용한 방법
<code />
public class User {
private String name;
private String juminNum;
private int age;
private int sex;
public User(String name) {
this.name = name;
}
public User(String name, String juminNum) {
this.name = name;
this.juminNum = juminNum;
}
public User(String name, String juminNum, int age) {
this.name = name;
this.juminNum = juminNum;
this.age = age;
}
public User(String name, String juminNum, int age, int sex) {
this.name = name;
this.juminNum = juminNum;
this.age = age;
this.sex = sex;
}
}
<code />
public class Main {
public static void main(String[] args) {
User user = new User("홍길동");
user = new User("홍길동", "900000-000000");
user = new User("홍길동", "900000-000000", 12);
user = new User("홍길동", "900000-000000", 12,1);
}
}
3. 3. 고전적 방법2. Get/Set 메소드 이용
<code />
public class User {
private String name;
private String juminNum;
private int age;
private int sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJuminNum() {
return juminNum;
}
public void setJuminNum(String juminNum) {
this.juminNum = juminNum;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}
<code />
public class Main {
public static void main(String[] args) {
User user = new User();
user.setAge(10);
user.setJuminNum("900000-000000");
user.setName("홍길동");
user.setSex(1);
}
}
4. 3. 빌더 패턴 적용
<code />
public class User {
private String name;
private String juminNum;
private int age;
private int sex;
public User( UserBuilder builder){
this.name = builder.name;
this.juminNum = builder.juminNum;
this.age = builder.age;
this.sex = builder.sex;
}
public static class UserBuilder{
private String name;
private String juminNum;
private int age;
private int sex;
public UserBuilder name(String name) {
this.name = name;
return this;
}
public UserBuilder juminNum(String juminNum){
this.juminNum = juminNum;
return this;
}
public UserBuilder age(int age){
this.age = age;
return this;
}
public UserBuilder sex(int sex){
this.sex = sex;
return this;
}
public User build(){
return new User( this);
}
}
}
<code />
public class Main {
public static void main(String[] args) {
new User.UserBuilder()
.age(10)
.name("홍길동")
.sex(1);
}
}
'프로그래밍 > Java' 카테고리의 다른 글
Html으 PDF로 변경하는 방법 (0) | 2020.03.13 |
---|---|
[자바/JAVA] 디자인패턴 #6 데코레이터( Decorator) 패턴 (0) | 2019.01.10 |
[자바/프로그램] 폴더구조 및 파일을 똑같이 복사하는 프로그램 (0) | 2017.11.21 |
[자바/JAVA] 디자인패턴#5 생산자/소비자 패턴( Producer/Consumer Pattern) (0) | 2017.11.17 |
[JAVA/실전코딩] 파일로부터 학생의 점수를 입력받아 학점을 부여하는 프로그램 (0) | 2017.11.17 |