java-squid / effective-java

effective java 3e study
105 stars 38 forks source link

[아이템 05] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 #5

Closed 102092 closed 4 years ago

102092 commented 4 years ago

p29 Supplier를 입력받는 메서드는 일반적으로 한정적 와일드 타입을 사용해 팩터리의 타입 매개변수를 제한해야한다.

  1. java8에서 나온 Supplier라는 인터페이스에 대해 간단하게 나마 설명해주시면 감사하겠습니다!
  1. 한정적 와일드 타입을... 이건 아마도 Supplier<? extends Tile> 코드를 설명하는 것 같은 데 제가 이해한 바로는 Tile 클래스를 상속받는 클래스라면 모든지 가능하다? 라는 의미같은 데, 아마도 1번의 설명과 맞물려서 ... 한번 이야기해보면 좋을듯 합니다.
david215 commented 4 years ago
  1. java8에서 나온 Supplier라는 인터페이스에 대해 간단하게 나마 설명해주시면 감사하겠습니다!

Supplier 인터페이스만 분리해서 보기 보다는 전체적인 functional interface의 구조를 보면 자연스럽게 이해가 될 거 같네요. java.util.function에서 가장 대표적인 개념들을 꼽아보자면

  1. 한정적 와일드 타입을... 이건 아마도 Supplier<? extends Tile> 코드를 설명하는 것 같은 데 제가 이해한 바로는 Tile 클래스를 상속받는 클래스라면 모든지 가능하다? 라는 의미같은 데, 아마도 1번의 설명과 맞물려서 ... 한번 이야기해보면 좋을듯 합니다.

이해하신 것이 맞습니다. Supplier를 사용해 의존 객체 주입을 사용할 때 한정적 와일드 타입을 사용함으로써 하위 클래스의 객체를 주입하는 것을 가능하게 해주기 위해 사용한다고 이해하면 되겠네요.

guswns1659 commented 4 years ago

p.30 의존 객체 주입이라 하는 이 기법은 클래스의 유연성, 재사용성, 테스트 용이성을 기막히게 개선해준다.

외부에서 객체를 주입받는 기법이 내부에서 객체를 생성해서 할당하는 방식에 비해 유연성, 재사용성, 테스트 용이성에 유리하다고 하는데 왜 그런지 각 키워드 별로 간단히 설명해주시면 감사하겠습니다!

102092 commented 4 years ago

Q) 스프링에서 필드 주입을 왜 deprecated하는가?

102092 commented 4 years ago

Q) 사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다 건 무슨말일까?