인터페이스의 장점

0

1) 두 대상(객체)간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.
사람 - 윈도우 - 컴퓨터 가 있을때, 인터페이스는 윈도우(껍데기)의 역할을 해줌.
컴퓨터의 내부 알맹이가 바껴도, 윈도우의 모습은 그대로이기 때문에 변경에 유리함.

2) 선언(설계)(껍데기)와 구현(알맹이)을 분리시킬 수 있게 한다.

class B { // 껍데기 + 알맹이
		public void method() {    // 선언부만 떼어내서 인터페이스로 선언
        	System.out.println("methodInB");
        }
}

⬇︎ 선언부와 구현부를 인터페이스로 분리 ⬇︎

interface I { // 껍데기로 분리
	public void method();  // 선언부만 가져와서 추상메소드로 만듦
}

class B implements I {  // 알맹이로 분리
	public void method() {
    	System.out.println("methodInB");
    }
}

  • 인터페이스가 없으면 클래스를 사용하는 User A코드가 class B를 직접 사용하는데, B의 내용을 바꿀 시에 A의 내용도 바꿔줘야 함. (강한 결합)
  • 인터페이스가 있으면 A는 인터페이스하고만 직접적인 관계가 있음. 코드를 변경할 때 class B만 바꾸면 되고 A는 안바꿔줘도 됨. 바뀐 코드를 편하게 사용할 수 있음. 변경에 유리함, 유연한 코드 (느슨한 결합)

3) 개발 시간을 단축할 수 있다.
: 알맹이를 다 작성하지 않아도, 인터페이스를 통해 코드를 작성할 수 있음.
( A→ I 사용, B는 I 이용해서 구현) 동시에 진행 가능

4) 변경에 유리한 유연한 설계가 가능하다.

5) 표준화가 가능하다.
java application이 만든 표준DB JDBC(인터페이스 집합)에 맞춰서 oracle,mysql 등 DB회사가 개발. 표준 인터페이스에 맞춰서 개발했기 때문에, 다른 DB를 사용해도 표준에 맞췄기 때문에 상관 없음.

6) 서로 관계없는 클래스들을 관계 맺어줄 수 있다.

  • 서로 상속관계가 아닌 클래스들을 묶어주기 위해서, 비어있는 인터페이스를 하나 만들고 그 인터페이스를 implements해서 같은 인터페이스를 구현했다는 공통점을 만들어줌.
  • 인터페이스는 다중 상속이 가능하기 때문에 어떤 상속계층도가 있어도 인터페이스를 구현할 수 있음.
    
    ⬇︎ 서로 관계 없는 SCV, Tank, Dropship 세 클래스를 인터페이스로 묶어줌 ⬇︎
void repair(Repairable r) {  // Repairable을 구현한 클래스 객체만 가능
	if (r instanceof Unit) {
    	Unit u = (Unit)r;
        ~ //생략

출처

  • 자바의 정석 기초 - youtube, ch 7-39
profile
백엔드를 공부하고 있습니다.

0개의 댓글