자바
-
[Effective Java] 인스턴스화를 막으려거든 private 생성자를 사용하라Java 2023. 2. 2. 10:58
인스턴스화를 막는 이유 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있다. 예를 들어 java.lang.Math, java.util.Arrays 처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있다. 이러한 성격의 클래스는 인스턴스화를 막는게 일반적이다. 인스턴스를 만든다는 것은 객체마다 다른 속성값을 가지고 있을 때 의미가 있다. 정적 필드와 메소드로만 구성된 클래스는 객체를 만드는것이 의미가 없다. 심지어 메모리상 낭비를 가져온다. 따라서 정적인 방식으로 만들어진 클래스는 인스턴스화를 막는것이 옳다. 추상 클래스로 만드는 것으로는 인스턴스화를 막을 수 없다. 하위 클래스를 만들어 인스턴스화하면 그만이기 때문이다. 이를 본 사용자는 상속해서 쓰라는 뜻으로 오해할 수 있으니 더 ..
-
[Effective Java] private 생성자나 열거 타입으로 싱글턴임을 보증하라Java 2023. 2. 2. 10:57
싱글턴(Singleton)이란? 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴패턴이란? 생성자의 호출이 반복적으로 이루어져도 실제로 생성되는 객체는 최초 생성된 객체를 반환함을 의미한다. public class Animal{ private static Animal animals = null; private Animals(){} public static Animals getInstance(){ if(animals == null){ animals = new Animals(); } return animals; } } Animals라는 클래스가 있고 private static을 사용하여 최초로 메모리를 한번만 할당한다. 싱글턴 사용하는 이유 객체 생성으로 재 사용이 가능하기 때문에 ..