Java - Interface Advantages

iseon_u·2022년 5월 7일
0

Java

목록 보기
35/77
post-thumbnail

Interface Advantages 인터페이스의 장점


  • 두 대상 (객체) 간의 연결, 대화, 소통을 돕는 중간 역할을 한다.
  • 선언 (설계) 와 구현을 분리 시킬 수 있게 한다.
  • 변경이 적을수록 할 일이 줄어들고 에러도 적어진다.
class B {
	public void method(){}
}

껍데기 + 알맹이

  • 유연하지 않은 코드
  • 변경에 불리하다.
interface I {
	public void method();
}

class B implements I {
	public void method() {}
}

껍데기 ↔ 알맹이 분리

  • 알맹이 변경에 유연한 코드
  • 변경에 유리하다.

클래스의 관계

  • A가 B를 사용 (A가 B에 의존)

직접적인 관계 (A-B)

class A {
	public void methodA(B b){ // B 사용
			b.methodB(); // B 클래스의 메서드 직접 호출
		}
}

class B {
	public void methodB(){
			System.out.println("methodB()");
		}
}

  • 직접 사용할 때 B 가 변경되면 A 의 변경이 불가피하다.
  • 강한 결합

간접적인 관계 (A-I-B)

class A { // B 와 관계 없음
	public void methodA(I i){ // I 사용
			i.methodB();
		}
}

interface I { void methodB(); } // 껍데기

class B implements I { // 알맹이
	public void methodB(){
			System.out.println("methodB()"); 
		}
}
// ----->

class C implements I { // 알맹이
	public void methodB(){ // B 를 C 로 변경해도 A 변경 없음
			System.out.println("methodB() in C"); 
		}
}

  • 인터페이스 덕분에 B가 변경되어도 A는 안바꿔도 되게 된다.
  • 느슨한 결합

개발 시간 단축

  • B 개발 완료가 되지 않아도 추상메서드를 통해 A 사용 가능
  • A 사용시 iv 도 메서드로 이용, 직접 접근 불가 (캡슐화)
  • A 와 관계 없이 B 구현 가능

유연한 설계

  • 변경에 유리한 설계를 할 수 있다.
  • 클래스 사이의 간접적인 관계 (A-I-B)

표준화 가능

  • JDBC - DB에 사용되는 표준 인터페이스 집합

유연한 클래스 관계

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

void repair(Repairable r) {
	if (r instanceof Unit) {
			Unit u = (Unit)r;
			while(u.hitPoint != u.MAX_HP) {
					u.hitPoint++
				}
		}
}
interface Repairable {}
class Dropship extends AirUnit implements Repairalbe {
}

profile
🧑🏻‍💻 Hello World!

0개의 댓글