class B {
public void method(){}
}
껍데기 + 알맹이
- 유연하지 않은 코드
- 변경에 불리하다.
interface I {
public void method();
}
class B implements I {
public void method() {}
}
껍데기 ↔ 알맹이 분리
- 알맹이 변경에 유연한 코드
- 변경에 유리하다.
class A {
public void methodA(B b){ // B 사용
b.methodB(); // B 클래스의 메서드 직접 호출
}
}
class B {
public void methodB(){
System.out.println("methodB()");
}
}
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");
}
}
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 {
}