Item1에서 클래스에서 인스턴스를 생성하는 생성자와 static 팩토리 메서드를 배웠다.그러나 두 방법에는 똑같은 문제가 하나 있다."선택적 매개변수가 많을 때 적절히 대응하기 어렵다."라는 것이다.이제 선택 매개변수가 많은 상황에서 대처법을 배워본다.필수 매개변수
이 책의 대부분의 내용은 2가지 원칙에서 파생된다.(명료성, 단순성)정해진 동작이나 예측할 수 있는 동작만 수행해야 한다.컴포넌트는 가능한한 작되, 그렇다고 너무 작아서는 안된다.코드는 복사되는게 아니라 재사용되어야 한다.컴포넌트 사이의 의존성은 최소로 유지해야 한다.
한정된 값만 갖는 데이터 타입열거된 상수는 각 하나의 Week 객체다.인스턴스를 오직 하나만 생성할 수 있는 클래스이제 싱글턴을 만드는 방식을 알아본다.생성자를 private으로 감춘다.public static final 필드를 이용해, 객체를 딱 한번만 생성한다.코드
단순히 static 메서드와 static 필드만 담은 클래스를 만들고 싶을 때가 있다.java.lang.Math 나 java.utils.Arrays 처럼, 기본 타입 값이나 배열 관련 메서드들을 모아놓을때java.utils.Collections 처럼 특정 인터페이스의
똑같은 기능의 객체를 매번 생성하기보단 객체 하나를 재사용하는 편이 낫다.그런데 이때 객체 생성이 너무 빈번하고 불필요하게 이루어지면 문제가 될 수 있다.위 코드는 하지 말아야 할 극단적인 예다.실행될 때마다 String 인스턴스를 새로 만든다.생성자에 넘겨진 "bik
c,c++처럼 메모리를 직접 관리하는 언어를 사용하다 java를 사용하면 가비지컬렉터로인해 직접 메모리를 해제하지 않아도된다.하지만 이는 메모리 관리에 더 이상 신경쓰지 않아도 된다는 말이 아니다.메모리 누수를 일으키는 주범들이 있다.메모리 누수가 일어나는 위치는?St
java는 2가지 객체 소멸자를 제공한다.그중 finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있어 일반적으로 불필요하다.오동작, 낮은 성능, 이식성 문제의 원인이 되기도 한다.finalizer는 나름의 쓰임새가 몇 가지 있긴 하지만 기본적으로 쓰지 말아야
java lib에는 close메서드를 호출해 직접 닫아줘야 하는 자원이 많다.예로 InputStream,OutputStream,java.sql.Connection 등등이 있다.자원 닫기는 클라이언트가 놓치기 쉬워서 예측할 수 없는 성능 문제로 이어지기도 한다.이런 자원
많은 클래스가 하나 이상의 자원에 의존한다.예를들어 맞춤법 검사기는 사전에 의존하는데, 이런 클래스를 static 유틸리티 클래스로 구현한 모습을 종종 볼 수 있다.실제로 언어별로도 사전이 다양하며 test 등등 다양한 사전이 존재한다.그러나 위 예제들은 위 예제들은