더북(TheBook)

4.4.5 서비스 로더


특정 서비스는 프로그램을 조립하거나 배포하는 시점에 구성이 가능해야 한다. 이렇게 만드는 한 가지 방법은 서로 다른 서비스 구현체를 사용할 수 있게 하고, 프로그램에서 그중 가장 적합한 구현체를 선택하는 것이다. ServiceLoader 클래스를 이용하면 공통 인터페이스를 준수하는 서비스 구현체를 손쉽게 로드할 수 있다.

먼저 서비스의 각 인스턴스에서 제공해야 하는 메서드를 나열한 인터페이스(원한다면 슈퍼클래스)를 정의한다. 예를 들어 암호화(encryption)를 제공하는 서비스가 있다고 하자.

package com.corejava.crypt;


public interface Cipher {

    byte[ ] encrypt(byte[ ] source, byte[ ] key);

    byte[ ] decrypt(byte[ ] source, byte[ ] key);

    int strength();

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.