Effective Java 22

[Effective Java : Item 2] 생성자에 매개변수가 많다면 빌더를 고려하라

개요 생성자와 정적 팩터리 메서드에는 공통적인 제약이 하나 있는데, 바로 매개변수가 많을 경우 적절히 대응하기 힘들다는 점이다. 식품 포장의 영양정보를 표현하는 클래스가 있다고 가정하자. 이 클래스에는 다양한 영양 정보를 표시하기 위해 수많은 필드들이 있을 것이다. 만약 특정 식품 포장에 영양정보를 표현하기 위해 이 클래스를 사용한다면 대부분의 제품은 필수 값을 제외하고 선택 항목들의 값이 0이 될 것이다. 위와 같은 문제를 해결하기 위해 다음과 같은 대안이 있다. 점층적 생성자 패턴(telescoping constructor pattern) 자바 빈즈 패턴(JavaBeans pattern) 빌더 패턴(Builder pattern) 빌더 패턴이 가장 권장되는 것처럼 제목에서부터 언급하지만, 그 이유를 알..

Backend/Java 2024.01.19

[Effective Java : Item 1] 생성자 대신 정적 팩터리 메서드를 고려하라

개요 클래스의 새로운 인스턴스를 얻으려고 할 때 보통은 생성자를 이용한다. 하지만 특정 상황에 따라 생성자 대신 '정적 팩터리 메서드'를 통해 인스턴스를 반환하는 것을 고려해볼 수 있다(디자인 패턴의 팩터리 메서드 패턴과는 관계가 없다). 정적 팩터리 메서드가 생성자보다 무조건 좋은 것은 아니며, 경우에 따라 둘 중 하나 또는 두 가지 모두 제공할 수 있다. 정적 팩터리 메서드를 사용할 경우 아래와 같은 장단점이 존재한다. 장점 1. 메서드명, 즉 이름을 가질 수 있다. 2. 호출될 때마다 새로운 객체를 생성할 필요가 없다. 3. 반환 타입의 하위 타입 객체를 반환할 수 있다. 4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 5. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체..

Backend/Java 2024.01.18
반응형