Web/JAVA
[effective java] 3판 요약 보면서 (2)
태애니
2023. 4. 18. 20:38
728x90
리소스를 엮을 때는 의존성 주입을 선호하라
public class SpellChecker {
private final Lexicon dictionary;
public SpellChecker(Lexicon dictionary) {
this.dictionary = Objects.requireNonNull(dictionary);
}
public boolean isValid(String word) {
throw new UnsupportedOperationException();
}
public List<String> suggestions(String typo) {
throw new UnsupportedOperationException();
}
}
class Lexicon {}
이 패턴의 변종으로 리소스의 팩토리를 생성자에 전달하는 방법도 있다. 이 방법은 자바 8에 들어온 Supplier<T> 인터페이스가 그런 팩토리로 쓰기에 완벽하다. Supplier<T>를 인자로 받는 메서드는 보통 bounded wildcard type 으로 입력을 제한해야 한다.
Mosaic create(Supplier<? extends Tile> tileFactory) { ... }
https://delightpip.tistory.com/165
[Java] Interface Supplier<T>
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Supplier.html Supplier (Java SE 11 & JDK 11 ) docs.oracle.com Module java.base Package java.util.function Interface Supplier Type Parameters:T - the type of results supplied by
delightpip.tistory.com
728x90