Java/이펙티브 자바(Effective Java) 14

[이펙티브 자바(Effective Java)][객체 생성과 파괴] - 3. 생성자나 열거타입으로 싱글턴 임을 보증하라

📖본 포스팅은 'Effective java - 조슈아' 님의 책를 보고 작성되었습니다. [싱글턴] 인스턴스를 오직 하나만 생성할 수 있는 클래스를 싱글턴 클래스라고 한다. 싱글턴이 사용되어야 할 때? 무상태(stateless)를 유지해야 하는 경우 설계상 유일해야 하는 시스템 컴포넌트 [싱글턴을 사용하는 이유] 싱글턴의 경우엔 객체 생성이 한 번만 이루어지고 난 뒤 생성된 객체를 계속 재사용하기 때문에 메모리 낭비를 방지할 수 있다. 싱글톤 객체의 경우 한 번 생성으로 전역성을 띄기 때문에 다른 객체와 공유가 용이하다. [싱글턴을 만드는 방법(3가지)] 보통 싱글턴을 만드는 방법은 세 가지가 있는데 아래의 1번 2번을 사용해 싱글턴을 만드는 것이 일반적이고 보편적인 방법이다. 1번과 2번 두 방법 모두 ..

[이펙티브 자바(Effective Java)][객체 생성과 파괴] - 2. 생성자에 매개변수가 많다면 빌더를 고려해라

📖본 포스팅은 'Effective java - 조슈아' 님의 책을 보고 작성되었습니다. [점층적 생성자 패턴(Telescoping Constructor Pattern)] 필수 매개변수만 받는 생성자부터 ~ 필수 매개변수 + 선택 매개변수 1 ... n개 전부 다 받는 생성자까지 모든 생성자를 작성하는 방법 [점층적 생성자 패턴 예시 코드] public class NutritionFacts{ private final int servingSize; // 필수 private final int servings; // 필수 private final int calories; // 선택 private final int fat; // 선택 private final int sodium; // 선택 private fina..

[이펙티브 자바(Effective Java)][객체 생성과 파괴] - 1. 생성자 대신 정적 팩터리 메서드를 고려해라

📖본 포스팅은 'Effective java - 조슈아' 님의 책를 보고 작성되었습니다. [객체 생성과 파괴] 객체 생성과 파괴 파트(part)에서 배우는 것들... 객체를 만들 때와 만들지 말아야 할 때를 구분 올바른 객체 생성과 불필요한 생성 피하는 방법 객체를 파괴할 때 올바르게 파괴하는 방법 [생성자 대신 정적 팩토리 메서드를 고려해라] [인스턴스 변수의 초기화] 클래스를 가지고 객체를 생성하면, 해당 객체는 메모리에 즉시 생성된다. 그러나 이렇게 생성된 객체는 모든 인스턴스 변수가 아직 초기화되지 않은 상태기 때문에 자바에서는 클래스 변수와 인스턴스 변수는 별도로 초기화하지 않으면, 설정되어 있는 기본값으로 자동 초기화 된다. 그러나 사용자가 원하는 값으로 인스턴스 변수를 초기화하려면, 일반적인 ..

[이펙티브 자바(Effective Java)] - 0. 들어가기에 앞서

📖본 포스팅은 'Effective java - 조슈아' 님의 책를 보고 작성되었습니다. [들어가기에 앞서..] 클래스와 객체(Object), 인스턴스(intstance)와 인스턴스화가 무엇인지 다시 확인하고 시작하자. [클래스(class)] 일반적으로 클래스는 설계도, 객체를 설계도로 실제 만든 물건, 사물을 이야기 한다. 혹은 클래스를 붕어빵 틀, 객체를 붕어빵 틀로 찍어낸 붕어빵으로 표현한다. [객체(Object)] 객체는 기능과 속성으로 나눌 수 있다. 이를 객체 멤버라 부른다. 객체 멤버 = 기능 + 속성 기능 메서드(method) 메서드 이름 매개변수 속성(property) 변수나 상수 참조변수 등이 이 안에 올수 있다. 클래스의 인스턴스와 배열은 객체라고 불린다. 그러나 기본 타입 값의 경우엔..