Java - 객체결합을 위한 인터페이스 구현
- 인터페이스는 일부 구간, 기능 또는 어떤 일부 캡슐들이 교체되거나 만들어지지않았을때 대한으로 삼을수있는것이다.
첫번째, 예시로 캡슐을 교체하는 방식을 들겠다.
Program
public class Program {
public static void main(String[] args) {
A a = new A();
a.print();
}
}
A
public class A {
private B b;
public A() {
b = new B();
}
public void print() {
int total= b.total();
System.out.printf("total is %d\n", total);
}
}
B
public class B {
public int total() {
return 30;
}
}
A와 B의 사이가 부품관계로써 결합력이 강하게 만들어져있는 코드이다.
- 나중에 B를 주입할수 있게 해보자. -> A 에는 부품을 결합하듯이 세팅할수있는 방법이있어야하고 B에는 B를 구현할수있는 표현식이있어야한다. A는 결합할수있도록하기위해서 자료형(인터페이스가) 준비되야한다.
Program
public class Program {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.setX(b);
a.print();
}
}
A와 B는 결합하고있다. 위에 예시는 A 의 내부에서 직접 만들어서 밖에서 알수없는 일체형으로 만들었지만 여기서는 결합형으로 만들어진걸볼수있다. 결합이 인터페이스를 구현하고있는 객체라면 누구나다 결합할수있는 형태로 만들어졌다. -> 결합력이 낮아진걸 알수있다.
A
package part3.ex06.인터페이스;
public class A {
private X x;
public void setX(X x) {
this.x = x;
}
public A() {
// b = new B();
}
public void print() {
int total= x.total();
System.out.printf("total is %d\n", total);
}
}
A가 B없이도 마감처리할수있는 형태로 바뀌었다.
B
public class B implements X {
public int total() {
return 30;
}
}
X 인터페이스를 구현하고있다면 B가 아닌 어떤 객체과 와도 사용이 가능하다. (더 성능 개선된것으로 변경가능)
X
public interface X {
int total();
}
-
- 인터페이스는
- 구현이란 자체를 하지않기때문에 보호모드도사용하지도않고, 함수 구현블럭도 만들지않고, 속성을 정의해선 절대안된다.
댓글남기기