클라이언트가 클래스의 인스턴스를 얻는 방법public 생성자static factory method(≠디자인 패턴)static factory method의 장점이름을 가질 수 있다. → 이름을 통한 반환될 객체의 특성 묘사 가능호출될 때마다 인스턴스를 새로 생성하지 않아
배경 선택적 매개변수가 많을 때 적절하게 대응하기 어렵다 선행적 해결 방법점층적 생성자 패턴: 필수 매개변수만 받는 생성자 ..>..>필수 매개변수 + 선택 매개변수 전체를 받는 생성자단점설정을 원하지 않는 매개변수까지 포함해야하고 어쩔 수 없이 그런 매개변수
싱글턴은 인스턴스를 오직 하나만 생성할 수 있는 클래스다. 이런 싱글턴 클래스는 호출 시 매번 인스턴스를 생성하지 않고 미리 생성해둔 인스턴스를 반환하기 때문에 DB의 Connection Pool에서도 사용하여 관리하는 것이 효율적이다책에서는 이런 싱글톤을 만드는 방법
정적 메서드와 정적 필드는 OOP에서 미움 받는 형식이지만 아래와 같은 상황에선 쓰임새가 존재한다.기본 타입 값이나 배열 관련 메서드들을 모아놓을 때특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓고 싶을 때final 클래스와 관련한 메서드를 모아놓을
사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다.위와 같은 SpellChecker 클래스는 Dictionary를 사용하고 이를 의존하는 리소스 또는 의존성이라고 부른다. 이렇게 정적 유틸리티를 잘못 사용하거나 싱글턴을
똑같은 기능의 객체를 매번 생성하기보단 객체 하나를 재사용하는 편이 나을 때가 많다.1번의 경우 실행될 때 마다 String 인스턴스를 새로 만들고 2번은 하나의 인스턴스를 사용한다. 1번처럼 new 키워드를 이용해 문자열을 생성하는 것은 무의미하며 성능에 악영향을 끼
자바에서는 가비지 컬렉터가 다쓴 객체를 알아서 회수해간다 하지만 그렇다고해서 메모리 관리에 신경쓰지 않으면 안된다. 메모리 누수가 발생하는 프로그램을 오래 실행하다보면 점차 가비지 컬렉션 활동과 메모리 사용량이 늘어나 결국 성능이 저하되거나 메모리초과(OufOfMemo
finalizer최상위 Object 클래스에 포함된 메서드이기 때문에 finalize 메서드 재정의(Overriding) 가능finalize메서드를 재정의하면 해당 객체가 Garbege Collection 대상이 되었을 때 finalize메서드가 호출된다. 단, 즉시