이팩티브자바 Item 5 , 의존객체주입을 사용하라 대부분의 클래스가 하나 이상의 자원에 의존한다. SpellChecker를 다음과 같이 구현하는 모습이 드물지 않게 보인다. static 유틸리티 클래스(아이템4) 싱글톤으로 구현(아이템3) 두 방식 모두 사전을 단 하나만 사용할 때 훌륭해보이지 한다. 실제로 각 언어의 맞춤법 검사기는 사용하는 사전이 다르고 테스트용 사전도 사용할 수 도 있다. 어떤 클래스가 사용하는 자원에 따라 행동을 달리... 이팩티브자바이팩티브자바 객체 생성과 파괴 item04 static 메서드와 static 필드만을 담은 클래스를 만든 경우에 추상 클래스로 만드는 것으로도 인스턴스화를 막을 수 없다. --> 하위 클래스를 만들어 인스턴스화하면 그만. 그래서 상속해서 쓰라는 뜻으로 오해할 수 있다는 문제가 있다. 그리고 아무런 생성자를 만들지 않으면 컴파일러가 자동으로 기본 생성자(매개변수가 없는 public 생성자)를 만들어 주기 때문에 인스턴스를 만들 수 있다... 이팩티브자바bookbook 객체 생성과 파괴 item02 static 팩터리와 생성자 둘다 매개변수가 많이 필요한 경우에 불편해지는 문제가 있다. 해당 클래스는 몇몇 반드시 필요한 필드와 선택적인 필드를 가질 수 있는데, 그런 경우에 필수적인 매개변수를 가진 생성자에 부가적인 필드를 하나씩 추가하며 생성자를 추가로 생성한다. 1. 점층적 생성자 패턴 2. 자바빈즈 패턴 아무런 매개변수를 받지 않는 생성자를 사용해서 인스턴스를 만들고 setter를 ... 이팩티브자바bookbook
Item 5 , 의존객체주입을 사용하라 대부분의 클래스가 하나 이상의 자원에 의존한다. SpellChecker를 다음과 같이 구현하는 모습이 드물지 않게 보인다. static 유틸리티 클래스(아이템4) 싱글톤으로 구현(아이템3) 두 방식 모두 사전을 단 하나만 사용할 때 훌륭해보이지 한다. 실제로 각 언어의 맞춤법 검사기는 사용하는 사전이 다르고 테스트용 사전도 사용할 수 도 있다. 어떤 클래스가 사용하는 자원에 따라 행동을 달리... 이팩티브자바이팩티브자바 객체 생성과 파괴 item04 static 메서드와 static 필드만을 담은 클래스를 만든 경우에 추상 클래스로 만드는 것으로도 인스턴스화를 막을 수 없다. --> 하위 클래스를 만들어 인스턴스화하면 그만. 그래서 상속해서 쓰라는 뜻으로 오해할 수 있다는 문제가 있다. 그리고 아무런 생성자를 만들지 않으면 컴파일러가 자동으로 기본 생성자(매개변수가 없는 public 생성자)를 만들어 주기 때문에 인스턴스를 만들 수 있다... 이팩티브자바bookbook 객체 생성과 파괴 item02 static 팩터리와 생성자 둘다 매개변수가 많이 필요한 경우에 불편해지는 문제가 있다. 해당 클래스는 몇몇 반드시 필요한 필드와 선택적인 필드를 가질 수 있는데, 그런 경우에 필수적인 매개변수를 가진 생성자에 부가적인 필드를 하나씩 추가하며 생성자를 추가로 생성한다. 1. 점층적 생성자 패턴 2. 자바빈즈 패턴 아무런 매개변수를 받지 않는 생성자를 사용해서 인스턴스를 만들고 setter를 ... 이팩티브자바bookbook