[이펙티브 자바] 아이템3 - private 생성자나 열거 타입으로 싱글턴임을 보증하라
·
☕JAVA/이펙티브 자바
Singleton 패턴 싱글턴 패턴은 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 주로 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트에 사용되는 방식이다. 싱글턴 패턴을 사용할 때 주의할 점은 인터페이스로 정의하지 않은 싱글턴은 테스트에서 대체할 수 없다는 것이다. 싱글턴 클래스는 하나의 인스턴스를 생성하고 이를 재사용하는 방식으로 동작한다. 이로 인해 테스트 시 해당 객체를 가짜(Mock) 구현체나 다른 인스턴스로 교체할 수 있는 방법이 없어서 유연한 테스트가 어려워진다.  Singleton을 사용하는 방식 이러한 싱글턴을 만드는 방식은 크게 두가지가 있다. 아래에서 살펴보자. 필드방식public class Elvis { public static final Elvis INSTA..
[이펙티브 자바] 아이템2 - 생성자에 매개변수가 많다면 빌더를 고려하라
·
☕JAVA/이펙티브 자바
객체를 생성하는 방법 3가지 정적 팩터리와 생성자는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다. 점층적 생성자 패턴생성자를 호출하여 객체를 생성하는 방식에는 필수 매개변수를 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 2개를 받는 생성자... 형태로 생성자를 늘려나가는 점층적 생성자 패턴이 있는데 이 패턴은 매개변수가 많아지면 클라이언트 코드를 작성하기 어렵고 실수로 매개변수를 잘못 전달하여 런타임에 엉뚱한 동작을 하는 경우가 빈번하다. JavaBeans 패턴이 대안으로 매개변수가 없는 생성자로 객체를 만들고 setter 메서드를 호출해 원하는 매개변수의 값을 설정하는 JavaBeans 패턴이 존재하는데 이 방식은 점층적 생성자 패턴의 단점은 보완해주지만 객체 하나를 만들 때..
[이펙티브 자바] 아이템1 - 생성자 대신 정적 팩터리 메서드를 고려하라.
·
☕JAVA/이펙티브 자바
자바 언어에서 클래스의 인스턴스를 얻으려고 할 때 일반적으로 new 생성자를 사용하게 된다. 여기에 익숙해지면 어떤 상황이든 new 생성자만 사용하게 되는데 정적 팩터리 메서드 개념 또한 익혀 상황마다 적절한 방법으로 인스턴스를 얻도록 해야한다.생성자 대신 정적 팩터리 메서드를 사용함으로써 생기는 장점과 단점을 알아보자. 장점1. 이름을 가질 수 있다.정적 팩터리 메서드는 이름을 가질 수 있다. 생성자를 사용할때는 new 클래스명을 사용하기 때문에 해당 인스턴스가 구체적으로 어떤것을 의미하는 것인지 알 수 없다 하지만 정적 팩터리 메서드를 사용한다면 CreateAdult() CreateTeenager()와 같은 식으로 어떤 타입의 객체를 생성하는 것인지 알 수 있다. 2. 호출될 때마다 인스턴스를 새로 ..