1장. 오브젝트 의존관계
템플릿 메서드 패턴(Template method pattern)
상소을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법.
변하지 않는 기능은 슈퍼클래스에 자주변경되어 확장할 기능은 서브클래스에 만든다.
* hook method : 슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브클래스에서 선택적으로 오버라이드 할 수 있도록 만든 메서드
public abstract class Super {
public void templateMethod() {
hookMethod();
abstractMethod();
...
}
protected void hookMethod() {} // 선택적으로 오버라이드 가능한 훅 메서드
public abastract void abstractMethod(); // 서브클래스에서 반드시 규현해야하는 추상 메서드
}
public class Sub1 extends Super {
protected void hookMethod() {
..
}
public void abstractMethod() {
...
}
}
팩토리 메서드 패턴(Factory method pattern)
서브클래스에서 구체적인 오브젝트 생성 방법을 결정. 예를 들자면 getConnection() 메서드
서브클래스에서 오브젝트 생성 방법과 클래스를 결정할 수 있도록 미리 정의해둔 메서드. 이 방식을 통해 오브젝트 생성방법을 나머지 로직, 즉 슈퍼클래스의 기본 코드에서 독립시키게된다.