역할(interface)과 구현(구현체)을 분리한다.
클라이언트단에서는 역할(인터페이스)만 알고있으면 된다.
자바 언어의 다형성을 통해, 필요시 구현체를 갈아끼워 필요시 역할에 대한 구현체를 클라이언트 단의 수정 없이 서버의 구현 기능을 실행시점에 유연하게 변경할 수 있다.