더북(TheBook)

4.2.1 여러분이 소유한 클래스만 요구하거나 반환하라

클래스나 인터페이스를 디자인할 때, 프레임워크나 서드파티 라이브러리의 클래스가 아니라 자신이 소유한 클래스만 요구하거나 반환하는 것이 중요하다. 여기서 ‘자신이 소유한 클래스’란 도메인 모델에 속하며 완전한 통제와 소유권을 가진 클래스를 말한다. 예를 들어 엔터티, 리포지터리, 새로운 요구 사항을 위해 만든 새 데이터 구조 등이 이에 해당한다. 자신이 소유한 클래스만 반환하면 코드가 특정 라이브러리나 구조 등 외부 의존성과 결합되는 것을 방지할 수 있다.

이 패턴의 중요성은 코드를 다른 모듈이나 서드파티 라이브러리와 통합할 때 드러난다. 예를 들어 회사 내부에서 사용하는 채팅 도구의 SDK(Software Development Kit)를 도입했다고 가정해보자. 만약 이 채팅 SDK에 정의된 클래스를 코드 기반 전체에 전달한다면, 코드가 SDK에 강하게 결합된다. 그럴 경우 SDK가 바뀌면 어떤 일이 벌어질까?

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