You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
페이지 : 28p
내용 : 장점 3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다
질문
위 내용이 잘 이해가 안가서 검색해봤는데 공유합니다~~
HelloService 라는 인터페이스를 생성.
public interface HelloService {
String hello();
}
HelloService 를 구현한 클래스 생성.
public class KoreanHelloService implements HelloService {
@Override
public String hello() {
return "안녕";
}
}
public class EnglishHelloService implements HelloService {
@Override
public String hello() {
return "Hello";
}
}
해당 인스턴스들을 반환할 팩터리 클래스 생성
public class HelloServiceFactory {
public static HelloService of(String lang) {
if (lang.equals("ko")) {
return new KoreanHelloService();
} else {
return new EnglishHelloService();
}
}
}
이렇게하면 반환타입에 호환가능한 다른 타입의 인스턴스들을 반환할 수 있게 만들어준다.
인스턴스의 구현체가 아니더라도 상속을 통해 부모 클래스를 만들고 자식 클래스를 반환하는 방법도 얼마든지 가능하다.
질문있어요 🙋♀️🙋♂️
📚 책
페이지 : 28p
내용 : 장점 3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다
질문
위 내용이 잘 이해가 안가서 검색해봤는데 공유합니다~~
HelloService 라는 인터페이스를 생성.
HelloService 를 구현한 클래스 생성.
해당 인스턴스들을 반환할 팩터리 클래스 생성
이렇게하면 반환타입에 호환가능한 다른 타입의 인스턴스들을 반환할 수 있게 만들어준다.
인스턴스의 구현체가 아니더라도 상속을 통해 부모 클래스를 만들고 자식 클래스를 반환하는 방법도 얼마든지 가능하다.
또한, 매개 변수에 따라 다른 클래스의 객체를 반환 할 수 있게 만들 수 있다.
위와 같이 인터페이스 기반의 프레임워크를 사용할 수 있도록 강제할 수 있다.
구체적인 구현을 클라이언트로부터 숨길 수 있다. 자바 8 에서는 static 메서드를 인터페이스에 구현할 수 있으니
인터페이스를 위와같이 만들어 팩토리 클래스를 따로 생성할 필요없이 인터페이스 생성만으로도 해결이 가능하다.
인터페이스에서는 static만 선언하면 public static으로 간주한다.
물론 private static 메서드 선언도 가능하다.
The text was updated successfully, but these errors were encountered: