본문 바로가기

분류 전체보기

(67)
[Effective-Java] Item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글톤(Singleton): 인스턴스를 오직 하나만 생성하는 클래스 예: 함수와 같은 무상태(stateless) 객체나 설계상 유일해야하는 시스템 컴포넌트 문제점: 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다. 의존관계상 클라이언트가 구체 클래스에 의존한다. DIP를 위반한다. client가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다. 싱글톤 클래스는 테스트하기 어렵다. mock 구현으로 대체할 수 없기때문이다. 내부 속성을 변경하거나 초기화 하기 어렵다. private 생성자로 자식 클래스를 만들기 어렵다. 유연성이 떨어진다. 안티패턴으로 불리기도 한다 public static final 필드 방식의 싱글톤 public class SingletonPublicStaticFinalFi..
[Effective-Java] Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩터리 메서드와 생성자는 매개변수가 많이 필요한 경우 적절한 대응이 어려워진다. 이에대한 3가지 대안이 있다. 1. 점층적 생성자 패턴(telescoping constructor pattern) //필수 매개변수만 받는 생성자 public NutritionFactsConstructor(int servingSize, int servings) { this(servingSize,servings,0); } // 필수 매개변수 + 선택 매개변수 1개 public NutritionFactsConstructor(int servingSize, int servings, int calories) { this(servingSize,servings,calories,0); } // 필수 매개변수 + 선택 매개변수 2개 p..
[Effective-Java] Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 정적 팩터리 메서드의 장점 5가지 1. 이름을 가질 수 있다. 정적 팩터리 메서드는 생성자와 달리 반환된 객체의 특성과 역할을 묘사하기 쉽고, 시그니처가 같은 생성자가 여러개 필요하면 이름으로 구분지을 수 있다. public class Refrigerator{ String name; String manufacturer; public Refrigerator(String name) { this.name = name; } // 같은 타입을 파라미터로 받는 생성자가 1개 이상일 수 없다. // public Refrigerator(String manufacturer) { // this.manufacturer = manufacturer; // } //public static 메소드가 더 읽기 편하고 이해하기 쉽다...