책/EFFECTIVE JAVA
[객체생성과 파괴] 아이템2. 생성자에 매개변수가 많다면 빌더를 고려하라.
미로처럼
2024. 3. 3. 01:45
728x90
아이템1에서 적정 팩토리 메소드/팩토리 메소드, 선택적 매개변수가 많을 경우 적절히 대응하기 어렵다.
해당 챕터에서 예시로 나오는
점층적 생성자 패턴(telescoping constructor pattern)
위 패턴의 최악의 단점은 계속해서 내가 필요한 만큼 인스턴스를 늘려가야하는게 최악의 단점이다.
그리고 매개변수가 늘어가면 코드 가독성이 굉장히 떨어지게된다.
자바빈즈 패턴
객체 하나를 만들려면 메서드를 여러개 호출해야 하고, 개체가 완전히 생성되기 전까지는 일관성(consistency)이 무너진다.
또한 불변으로 만들 수 없다. 이 단점 보완을 위해 생성이 끝난 객체를 수동으로 얼리고(freezing) 얼리기 전에는 사용 할 수 없도록 해야한다.
위 2가지 패턴의 장점을 합친 방식이 빌더 패턴(Builder pattern)이다.
객체를 직접 만드는 대신 필수 매개변수만으로 생성자를 호출해 빌더 객체를 얻는다. 그리고 매개변수 없이 build 매서드를 통해 불변 객체를 얻을 수 있다.
빌더패턴은 명명된 선택적 매개변수(named optional paraemters)를 흉내 낸것이다.
이 패턴은 계측적으로 설계된 클래스와 쓰기 좋고 매개변수가 많을때 쓰면 좋다.
728x90