f-lab-edu / gregori

e-commerce 서비스

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

service interface 제거

jiunkoo opened this issue · comments

변경하는 이유

1. 하나밖에 없는 구현체

service의 구현체는 하나밖에 없음.
interface를 수정하면 구현체도 수정하므로 depth를 높여 개발 생산성을 떨어뜨림.

2. interface 구현의 장점을 온전히 활용하지 못함

OpenJDK의 명세를 보면 interface는 다음과 같이 동작하고 있음.

  • 인터페이스와 같은 특수한 것은 종종 inlined 된 것처럼 동작
  • 인터페이스는 낙관적 검사로 컴파일
    • 첫 번째 호출 시 인라인 캐시 생성 & 모노모픽 상태
    • 두 번째 호출에서 메가모픽 상태, vtable/iterable 호출
  • 내장된 배열을 통해 선형 검색

현재 구현은 확장성을 위해 불필요한 바인딩을 추가하고 있음.