상세 컨텐츠

본문 제목

스프링 기초 - 인터페이스 기반 프로그래밍

IT/프로그래밍

by James Lee. 2016. 5. 2. 21:01

본문

인터페이스 기반 프로그래밍

무엇인가?

  • Architectural pattern for implementing modular programming at the component level in an object-oriented programming language which does not have a module system. (오역의 소지가 있으므로 원문을 기고하였음)

  • 인터페이스 기반 아키텍처로도 알려져 있음

  • 구상 클래스(Concrete Class)를 직접 참조하지 않고 상위 인터페이스를 선언하고 다형성을 이용하여 유연하게 프로그램을 작성하는 방법


※ 구상 클래스라는 용어가 낯설다면 클릭

왜 쓰는가?

  • 인터페이스 기반 프로그래밍을 하지 않는다면

    • 의존성을 다른 구현으로 대체하려면 의존 클래스까지 변경해야 한다.

    • 즉 변경에 유연하게 대처하기가 어렵다.

  • 구체적인 클래스를 사용할 때보다 인터페이스를 사용하면 약간의 복잡성을 가중시키지만, 투자에 비해 얻는것이 크다. by 로드 존슨 (스프링 창시자)

    • 호출하는 코드에 영향을 미치지 않고, 애플리케이션 객체의 어떤 구현 클래스도 변경 시킬 수 있다.

    • 인터페이스 구현이 자유롭다.

    • 상속 계층에 얽매일 필요가 없고, 인터페이스 구현에서도 구체적인 상속을 이용하여 코드를 재사용할 수 있다.

    • 필요에 의해 간단한 테스트 구현과 인터페이스의 Stub 구현을 제공할 수 있다.

      • 이는 다른 클래스의 테스트를 수월하게 하고, 인터페이스에 합의한 후에 여러 팀들 간의 동시적인 작업 수행이 가능하게 해준다.

단점은?

  • 구체적인 문서 및 주석이 없을 경우 코드를 추적하기가 어려울 수 있다.


스프링은 인터페이스 기반 프로그래밍을 어떻게 지원하는가?

  • 아래와 같은 제약사항을 지켜야 한다

    1. 구성 메타데이터의 bean 요소에는 의존성의 구상 클래스를 지정

    2. 의존 빈 클래스는 의존성의 구상 클래스가 아닌 의존성 인터페이스를 참조


관련글 더보기

댓글 영역