Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

The Office Lover

인터페이스를 이해하는 다양한 방법 본문

Design Patterns

인터페이스를 이해하는 다양한 방법

Michael Gary Scott 2023. 6. 5. 14:35

인터페이스의 정의

  • 인터페이스는 속성을 포함할 수 없다.
  • 인터페이스는 메서드를 선언할 수 있으나, 실제 코드 구현을 포함할 수 없다.
  • 클래스가 인터페이스를 구현할 때는 인터페이스에 선언된 모든 메서드를 구현해야 한다.
  • Java 1.8 이후부터는 인터페이스의 메서드에 코드 구현이 포함될 수 있으며, 인터페이스에 정적 멤버 변수가 포함될 수 있다.
  • 하지만, Java를 제외하면 인터페이스는 위의 특성을 그대로 간직하고 있다.

본질적으로 인터페이스는 프로토콜 또는 규약의 집합으로, 사용자에게 제공되는 기능의 목록이다. 

 

 

 

인터페이스를 이해하는 다양한 방법

코드에서 구현되는 인터페이스는 구현이 아닌 인터페이스 기반이라는 설계 사상에 프로그래밍 언어의 인터페이스 또는 추상 클래스로 이해될 수 있다.

 

이 설계 사상을 적용하면 코드 품질을 효과적으로 향상할 수 있다.

  • 구현이 아닌 인터페이스 기반의 프로그래밍을 통해 구현과 인터페이스를 분리
  • 불안정한 구현을 직접 노출하는 대신 캡슐화하여 감춤
  • 안정적인 인터페이스만 노출할 수 있기 때문
  • 업스트림 시스템은 다운스트림 시스템에서 제공하는 인터페이스 프로그래밍과 연결되고, 불안정한 구현 세부 사항에 의존하지 않아도 됨 (결합을 줄이고 확정성을 향상함)

 

구현이 아닌 추상화에 기반한 프로그래밍

  • 개발에서 가장 큰 과제는 변화하는 요구 사항을 처리하는 방법
  • 구현에 영향받지 않는 설계는 코드 유연성을 높여줌
  • 이후 요구사항이 변경되더라도 훨씬 더 잘 대응할 수 있게 됨

좋은 코드 설계는 현재 요구 사항에 유연하게 대응할 수 있을 뿐만 아니라 이후 요구 사항이 변경될 때조차도 기존의 코드 설계를 훼손하지 않고 유연하게 대응하는 것

 

추상화는 코드의 확장성, 유연성, 유지 보수성을 향상하는 효과적인 수단임


출처 : 디자인 패턴의 아름다움