스터디 2

[Effective Java : Item 3] private 생성자나 열거 타입으로 싱글턴임을 보증하라

개요 싱글턴(singleton)이란 디자인 패턴 중 하나로, 인스턴스를 오직 하나만 가질 수 있도록 보장하는 클래스를 말한다. 싱글턴의 예로는 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. @Service, @Controller 등으로 생성되는 스프링 빈 또한 싱글턴의 일종이다. 싱글턴을 생성하는 방법은 여러 가지가 있는데, 아래 3가지 방식에 대해 소개한다. public static final 필드 방식(Eager Initialization) 정적 팩터리 방식 열거 타입 방식(Enum Initialization) 1번과 2번 방식이 싱글턴을 만들 때 일반적으로 사용되지만, 이펙티브 자바의 저작자는 열거 타입 방식이 대부분의 상황에서 가장 좋은 방법이라 말한다. ..

Backend/Java 2024.01.24

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

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

Backend/Java 2024.01.18
반응형