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 구현을 제공할 수 있다.
이는 다른 클래스의 테스트를 수월하게 하고, 인터페이스에 합의한 후에 여러 팀들 간의 동시적인 작업 수행이 가능하게 해준다.
아래와 같은 제약사항을 지켜야 한다
구성 메타데이터의 bean 요소에는 의존성의 구상 클래스를 지정
웹 파일 캐싱 방지 (0) | 2016.11.24 |
---|---|
[개발일기] AngularJS2 배우면서 느끼는 점들 (0) | 2016.10.03 |
스프링 컨테이너(IoC컨테이너)정리 (0) | 2016.04.24 |
[프로젝트 오일러] 백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은? (0) | 2016.04.17 |
[프로젝트 오일러] 50자리 숫자 100개를 더한 값의 첫 10자리 구하기 (0) | 2016.04.17 |
댓글 영역