기록이 힘이다.

인터페이스 본문

JAVA/자료구조와 알고리즘

인터페이스

dev22 2022. 6. 16. 03:58
728x90

자바 컬렉션 프레임워크에 익숙해야 한다. 

Collections (Java Platform SE 8 ) (oracle.com)

 

Collections (Java Platform SE 8 )

Rotates the elements in the specified list by the specified distance. After calling this method, the element at index i will be the element previously at index (i - distance) mod list.size(), for all values of i between 0 and list.size()-1, inclusive. (Thi

docs.oracle.com

 

인터페이스 기반 아키텍처 라고도 하는 인터페이스 기반 프로그래밍 모듈 시스템이 없는 객체 지향 프로그래밍 언어 의 구성 요소 수준에서 모듈식 프로그래밍을 구현하기 위한 아키텍처 패턴입니다.
그러한 언어의 예로는 (2015년 현재 ) 구성 요소 수준의 모듈 시스템이 없는 Java가 있습니다. Java에는 패키지 시스템이 있지만 Java 소프트웨어 구성 요소는 일반적으로 여러 자바패키지로 구성됩니다.   
– 어떤 경우에도 인터페이스 프로그래밍은 구성 요소가 단일 Java 패키지로만 구성되어 있더라도 단순히 Java 패키지를 사용하는 것보다 이점을 제공할 수 있습니다.
  인터페이스 기반 프로그래밍은 응용 프로그램을 구성 요소 모음으로 정의하며 구성 요소간의 API( 응용 프로그래밍 인터페이스) 호출은 구체적인 클래스가 아닌 추상 인터페이스를 통해서만 이루어질 수 있습니다.
 클래스의 인스턴스는 일반적으로 Factory 패턴과 같은 기술을 사용하여 다른 인터페이스를 통해 얻을 수 있습니다
.  출처: 위키피디아, 이하 동일

 

팩토리 메서드 패턴(Factory method pattern) 객체지향 디자인 패턴이다. Factory method는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며. 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다.

 

자바는 List 인터페이스의 구현 클래스 ArrayList와 LinkedList 클래스를 제공합니다.

어떤 응용 프로그램에서는 LinkedList 클래스가 빠르고 다른 응용 프로그램에서는 ArrayList 클래스가 빠릅니다.

    

라이브러리를 사용할 때 코드는 오직 List와 같은 인터페이스만 의존하고 ArrayList 클래스와 같은 특정 구현에 의존해서는 안 됩니다. 

LinkedList를 반환하는 클래스

 

 

ArrayList가 아닌 LinkedList 클래스를 반환하므로 테스트에 실패한다.

Assertion Error란 조건이 거짓인 경우에 실행을 중단시키고 내는 에러를 말한다.

ArrayList를 반환하는 클래스

 

테스트 성공

 

### 이 테스트가 실습에는 적합하지만, 좋은 테스트 코드는 아니다. 좋은 테스트라면 대상 클래스가 인터페이스 요구사항을 충족하는지 확인해야 하고 구현 세부사항에 의존해서는 안된다.