우아한 프로그래밍

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); } }
profile

우아한 프로그래밍

@자바조아!

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!