결정지어지지 않았거나 나중에 교체가 될 수 있는 부분을 인터페이스로 만들어서 후에 결정될 수 있게함
기업용 어플리케이션이나 유지보수가 필요 할때 인터페이스가 필요하다.
인터페이스 구현하는 4가지 상황
package Exam_1.인터페이스;
public class Program {
public static void main(String[] args) {
A a = new A();
a.print();
}
}
안에서 결합하는 일체형 결합상태
package Exam_1.인터페이스;
public class A {
private B b;
public A() {
b = new B();// private B b를 사용하기 위해 생성자로 결합
}
public void print() {
int total = b.total();
System.out.printf("total is %d\n", total);
}
}
package Exam_1.인터페이스;
public class B {
public int total() {
return 30;
}
}
인터페이스를 구현하기전 코드 (결합력이 높은 코드)
package Exam_1.인터페이스;
public interface X {//오직 기능만 적음
int total();//앞에 public같은 보호같은거 필요없음
}
package Exam_1.인터페이스;
public class A {
private X x; // x는 b를 호출함
public void setX(X x) { //도킹역할
this.x = x; // 핸드폰의 베터리 단자 같은 역할
}
public A() {
//b = new B();// private B b를 사용하기 위해 생성자로 세팅
}
public void print() {
int total = x.total();
System.out.printf("total is %d\n", total);
}
}
package Exam_1.인터페이스;
public class B implements X {
public int total() {
return 30;
}
}
package Exam_1.인터페이스;
public class Program {
public static void main(String[] args) {
A a = new A();//핸드폰
B b = new B();//베터리
a.setX(b);//핸드폰을 베터리에 꽂음
a.print();
}
}
결합력이 낮은 코드
'Java 코드연습 > 인터페이스' 카테고리의 다른 글
[뉴렉처] 인터페이스를 구현하는 위치는? (0) | 2021.11.03 |
---|---|
[뉴렉처] 일부 기능을 분리하는 인터페이스 (0) | 2021.11.02 |
[뉴렉처] 새로운 객체로 바꾸기(문자열을 읽어서 객체로 만들기) (0) | 2021.11.02 |
[뉴렉처] 추상클래스와 인터페이스의 차이 (0) | 2021.10.31 |
[뉴렉처] 코드 분리와 인터페이스 (0) | 2021.10.31 |