싱글턴이란 애플리케이션 전체에서 단 하나만 존재하는 인스턴스를 의미한다 그러면 왜 단 하나만 필요할까? 크게 보면 두 가지 이유가 있다 1. 함수형 프로그래밍에서 자주 사용되는 불변 객체로 사용하기 위해 2. 생성 비용이 너무 비싸고, 스레드 간 공유해도 안전한 컴포넌트인 경우 1번은 Java Web Application을 만들 때 흔히들 사용하는 DTO 형태에서 상태 변경만 하지 못하도록 하면 된다 2번은 JPA에서 사용되는 EntityManagerFactory와 같은 객체를 예로 들 수 있다 EntityManagerFactory는 스레드 간 공유해도 안전하며 생성 비용이 크다 싱글턴을 만드는 방식은 어떻게 될까? 1. 생성자를 private으로 만들고 인스턴스 반환은 static method를 이용한..
인스턴스 생성할 때 받아야 하는 매개변수가 무지막지하다면 어떻게 해야 할까? 1. telescoping constructor pattern 2. java beans pattern 3. builder pattern 점층적 생성자 패턴은 받아야 하는 생성자 오버로딩을 통해 매개변수 수를 늘려가는 것이다 매개변수 개수에 따라 계속 늘어나야 하므로 유지보수까지 생각한다면 지옥이나 다름없다 boiler plate가 차지하는 코드가 도메인에서 필요한 필드, 메서드 보다 더 많아질 수 있다 Java Beans Pattern 은 기본 생성자를 하나 두고 setter로 필드 값을 지정해준다 하나의 instance 만들려면 setter 난무해야 하고 필수 값을 빠뜨리고 생성할 수도 있기 때문에 일관성이 보장되지 않는다 s..