아는 코드와 모르는 코드의 경계에 다음과 같은 구조를 차용해 모르는 코드와 별개로 개발을 가능하게 하자.
구현 - interface - adapter - 모르는 코드
구현 -> 필요한 기능에 대한 실제 구현. interface를 사용 한다. (그 너머는 몰라도 됨)
interface -> 구현에서 필요한 모르는 코드를 통해 제공 되어야 하는 기능에 대한 명세
adapter -> interface의 명세와 모르는 코드 사이의 간극을 메워줌.
마침 회사에서 외부 메일전송 라이브러리를 사용한 메일 전송 기능을 개발하고 있어서 유익한 내용이었다. 외부 라이브러리가 변경되더라도 adapter 코드만 변경하고 나머지는 신경쓰지 않는 방식으로 개발하고 있는데 제대로 하고 있는 듯!