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