자바의정석

[자바의 정석 - 기초편] ch7-39 인터페이스의장점1

유호야 2022. 3. 23. 15:39
반응형

 

ch7-39 인터페이스(interface)의 장점

- 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다. 

껍데기 : 두 대상이 직접 소통할 수도 있지만, 중간에 중개해주는 역할이 있을 때 더 긍정적인 역할이 있기 때문에 중간에서 역할을 돕고 있다

기계가 있고, 사람이 기계를 직접 조작하기 쉽지 않기 때문에 기계에 예쁘게 껍데기를 씌운다. 사람이 사용하기 편리한 인터페이스를 기계에 붙여 놓으면, 편리하게 사용할 수 있기 때문에 

자판기의 껍데기 같은 인터페이스를 예로 들 수 있다. 

컴퓨터가 있다. 
이 하드웨어를 직접 다루려면 쉽지 않다. 
그래서 나온 것이 "윈도우" GUI 라는 그래픽 유저 인터페이스가 나왔다. 

컴퓨터와 사람 간의 소통을 돕는 중간 역할 (윈도우, gui도 껍데기이다)

만약 이런 인터페이스가 없으면, 배우기도 쉽지 않을 뿐더러, 새로운 내용을 다시 익혀야 한다. 
따라서 인터페이스는 변경에 유리하다는 장점이 있다. 

- 선언(설계)와 구현을 분리시킬 수 있게 한다. 

왼쪽의 코드는 유연하지 않고, 변경에 불리하다. 
알맹이를 바꾸기 힘들기 때문

오른쪽 코드는 껍데기와 알맹이를 분리해서, 알맹이를 변경하기 쉽다. 
변경이 유리, 유연한 코드 

- 인터페이스 덕분에 B가 변경되어도 A는 안바꿀 수 있게 된다 (느슨한 결합) 


interface 를 사용함으로써 i.methodB(); 하면 interface의 methodB를 호출하지만, 실제로 호출되는 것은 이 인터페이스 i를 구현한 클래스의 인스턴스이다.


 - 실습

A 클래스가 변하지 않는 다는 것이 핵심

package ch07;

class A {
	public void method(I i) { //인터페이스 I를 구현한 넘들만 들어와라
		i.method();
	}
}

// B 클래스의 선언과 구현을 분리
interface I {
	public void method();
}

class B implements I{
	public void method() {
		System.out.println("B 클래스의 메서드");
	}
}

class C implements I {
	public void method() {
		System.out.println("C 클래스의 메서드");
	}
}
public class InterfaceTest {

	public static void main(String[] args) {
		A a = new A();
		a.method(new C());
		//A가 B를 사용(의존)
	}

}

반응형