JAVA/SPRING

[Spring]비즈니스 인터페이스에서 의존성을 정의하지 말라.

gracelove91 2019. 10. 26. 21:10
public interface Oracle {
    String defineMeaningOfLife();
}
public class BookwormOracle implements Oracle{
    private Encyclopedias encyclopedias;

    public void setEncyclopedias(Encyclopedias encyclopedias) {
        this.encyclopedias = encyclopedias;
    }

    @Override
    public String defineMeaningOfLife() {
        return "Encyclopedias are a waste of money - go see the world instead";
    }
}

BookwormOracle.javainterface Oracle 을 구현했을 뿐만 아니라 의존성 주입을 위한 수정자도 정의했다.
구현 클래스 각각이 자신의 의존성을 각자 정의하고, 비즈니스 인터페이스에서는 비즈니스 메서드만 유지해야한다.

만약 인터페이스에 setEncyclopedias 같은 의존성 주입 메서드를 정의한다면, 해당 인터페이스의 모든 구현체가 encyclopedias 의존성을 사용하거나 최소한 인지하도록 강제하는 것. 유연성이 떨어진다.