Java/effective java

Java/effective java

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

3. private 생성자나 열거 타입으로 싱글턴임을 보장하라.싱글턴인스턴스를 오직 하나만 생성할 수 있는 클래스ex ) 함수와 같은 무상태 객체, 설계상 유일해야하는 시스템 컴포넌트클래스를 싱글턴으로 만들면 클라이언트를 테스트하기 어렵다.싱글턴 인스턴스는 private 생성자를 가지므로 새로 생성하여 테스트할 수 없기 때문이다.실제 싱글턴 인스턴스에 접근하여 테스트할 경우 전역상태이므로 테스트 독립성을 깨뜨린다.인터페이스를 구현해 만든 싱글턴일 경우 테스트가 가능하다.현재는 static에 대해 mocking이 가능하지만 권장하지 않는다. 인터페이스를 통해 의존성을 주입하자. 인터페이스를 구현한 싱글턴// 인터페이스 정의public interface DatabaseConnection { void c..

Java/effective java

[Effective Java] Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라.

2. 생성자에 매개변수가 많다면 빌더를 고려하라.정적 팩터리와 생성자는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다.위 상황을 해결하기 위해 점층적 생성자 패턴, 자바빈즈 패턴, 빌더 패턴을 알아보자. 점층적 생성자 패턴// 코드 2-1 점층적 생성자 패턴 - 확장하기 어렵다! (14~15쪽) public class NutritionFacts { private final int servingSize; // (mL, 1회 제공량) 필수 private final int servings; // (회, 총 n회 제공량) 필수 private final int calories; // (1회 제공량당) 선택 private final int..

Java/effective java

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

Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라.정적 팩토리 메서드클래스의 인스턴스를 반환하는 정적 메서드클라이언트는 클래스의 인스턴스를 public 생성자로 얻는다.생성자와 별도로, 정적 팩터리 메서드를 제공하여 인스턴스를 반환할 수 있다.public class Car { private final String make; private final String model; private final int year; private final String color; private final boolean isElectric; // 생성자 public Car(String make, String model, int year, String color, boolean ..

Java/effective java

[Effective Java] 2장. 객체 생성과 파괴 - 0. 들어가기

Javajava는 단일 상속 방식의 객체 지향 언어이다.java의 메서드 안의 코드는 명령형(문장 지향) 방식으로 동작한다. 효과적인 java 코딩법?코드는 단순히 효과적으로 작동하고 다른 사람이 쉽게 이해할 수 있기만 하면 되는게 아니다.프로그램은 계속 수정할 수 있기 때문에, 구조가 수정하기 쉬워야한다.처음부터 기능 T가 어떻게 개선될지까지 고려해 구현 방식을 선택하는 것이 좋다.잘 작동하고, 다른 이가 쉽게 이해할 수 있고 미래의 수정과 개선 작업도 수월한 코드를 작성하는 것이 좋다.단순함이 쉬움을 뜻하지는 않는다.리팩토링의 핵심 목표는 시스템 구조 개선과 중복 제거이고, 이는 잘 설계된 API를 건너뛰고는 도달할 수 없다. 1장. 들어가기핵심 규칙 : 명료성과 단순성컴포넌트는 사용자를 놀라게 하는..

mint*
'Java/effective java' 카테고리의 글 목록 (2 Page)