일반적인 인스턴스 생성 방식은 생성자(Constructor)를 이용하는 방법이 있다.이 외에도 정적 팩터리 메서드(static factory method)를 제공 할 수 있다.아래는 정적 팩터리 메서드 사용 시 장점과 단점에 대해 열거한다.이름을 가질 수 있다.동일한
정적 팩터리 메소드와 생성자는 공통적인 제약이 있음.선택적 매개변수가 많을 경우 표현 방식의 유연성이 떨어지고 대응하기 어려움.점층적 생성자 패턴(Telescoping Constructor pattern), 자바빈즈 패턴(JavaBeans Pattern) 을 사용할 수
싱글턴 패턴은 인스턴스를 하나만 생성할 수 있는 클래스다.이를 이용하여 무상태(stateless)객체나 설계상 유일해야 하는 시스템 컴포넌트 혹은 인스턴스를 하나만 유지해도 좋은 경우 사용한다. 책에서는 이러한 싱글턴 패턴을 구현 시 private 생성자를 사용하여
정적 메소드와 정적 필드만을 담은 클래스를 사용할 때가 있다.이는 객체 지향적 사고에 좋은 방식은 아니지만 유틸리티 클래스 등 사용에 쓰임은 분명히 있다.해당 클래스를 사용 시 인스턴스화를 막아야 하는 문제에 직면한다.인스턴스 생성을 막는 방식과 그 문제점을 아래에 설
자원을 직접 명시하지 않고 의존 객체 주입을 사용해야 하는 클래스는 사용하는 자원에 따라 동작이 달라지는 클래스의 경우에 사용할 수 있다.단순한 예제로 사전의 경우를 예를 들어 잘못 사용된 사례는 아래와 같다.사전은 다양한 언어를 사용할 수 있다고 가정해보자.위에 제시
같은 기능의 객체를 매번 생성하여 사용하지말고 객체 하나를 재사용하는 편이 낫다.특히 불변 객체는 언제든 재사용할 수 있다.그렇지만 이번 아이템을 객체 생성은 비싸니 무조건 피해야 한다로 오해해서는 않된다.실제로 리팩토링 과정에서 하나의 for 문을 가독성 향상을 위해
아이템 7. 다 쓴 객체 참조를 해제하라. 일반적으로 자바 언어는 Garbage Collector에 의해 자동으로 메모리가 관리되기 때문에 메모리 관리에 부주의한 경우를 많이 볼 수 있다. 우리가 주의해야할 것은 객체의 레퍼런스가 남아있다면 해당 객체는 가비지 컬렉
아이템 8. finalizer와 cleaner 사용을 피하라. 자바는 두 가지 객체 소멸자(`finalizer와 cleaner`)를 제공한다. > JDK 9부터 finalizer는 deprecated로 지정되었고 cleaner가 대안으로 등장했다. finalizer
JDK 7부터 try-finally는 더 이상 최선의 방법이 아니다.try-catch-finally, try-finally 구문은 try 블럭에서 일어난 예외처리를 진행하는 문법이다.1개의 try는 반드시 catch 또는 finally 가져야 구문이 완성된다. cat