꾸준한 스터디
article thumbnail
[Item 3] private 생성자나 열거 타입으로 싱글턴임을 보증하라
Effective Java/정리 2023. 1. 7. 00:52

싱글턴은 인스턴스를 오직 하나만 생성하여 재사용하는 클래스이며 무상태, 유일 객체이다. 인터페이스 정의 없이 클래스를 싱글턴으로 만들면 유일 객체이므로 비용 등이 고려 될 경우 테스트가 불가피해진다. 따라서, 인터페이스 정의 및 구현을 통해 Mock 객체 구현을 통해 테스트를 진행해야한다. mock 테스트 방식이 궁금하다면 하단 github 링크의 mock_test 예제 코드를 참고 바란다. 싱글턴 방식에는 필드, 정적 팩터리, 열거 타입 3가지로 볼 수 있다. 필드 방식 private 기본 생성자를 만들어 놓았기에 필드를 초기화 할 때 한번 호출되어 하나뿐임이 보장된다. 또한 API를 통해 싱글턴 클래스 임을 명확하게 드러낼 수 있고 방식이 간결하다. public class Person { public..

article thumbnail
[Item 2] 생성자에 매개변수가 많다면 빌더를 고려하라
Effective Java/정리 2023. 1. 6. 00:10

필수가 아닌 선택적인 매개변수가 많을때 정적 팩터리와 생성자로 대응하기 쉽지 않다는 점이다. 점층적 생성자 패턴 - 선택 값을 하나씩 추가하여 생성자를 점층적으로 만드는 패턴이다. 매개변수의 개수나 타입이 일치하지 않을 경우 컴파일 오류를 통해 누락된 값을 확인할 수 있는 안전성을 가지고 있다. 그러나, 적당한 개수의 매개변수에 대한 점층적 생성자 패턴은 괜찮아 보일지 몰라도 점점 많아지는 생성자로 클래스 코드의 추가 수정 삭제등 유지보수에 대한 불편함이 있다. 또한 각 생성자의 의미, 어떠한 매개변수가 들어가야 하는지에 대한 가독성이 떨어진다.. public class Jwt { private static final String SECRET_KEY = "1234"; // JWT Secret Key pr..

article thumbnail
[Item 1] 생성자 대신 정적 팩터리 메서드를 고려하라
Effective Java/정리 2023. 1. 4. 00:09

정적 팩터리 메서드란? 클래스 타입의 인스턴스 생성 방식에는 new 연산자를 통한 생성자 호출 방법 대신 정적 팩터리 메서드를 제공할 수 있다. 정적 팩터리 메서드의 장점이 있지만 단점 또한 존재한다. 장점 1. 이름을 가질수 있다. 널리 사용되는 네이밍 컨벤션이 존재하며 자유로운 이름 지정을 통해 생성자에 비해 명확하다. 생성자의 경우 클래스와 동일한 이름과 매개변수의 타입과 개수의 차이를 두어 다양하게 제공 가능하나 각 생성자에 대한 설명 없이는 파악하는데 어려움이 있다. public class Pros1 { private String name; // private 생성자 private Pros1(String name) { this.name = name; } public static Pros1 of(..