본문 바로가기

Design Pattern

템플릿 메서드 패턴 (Template Method Pattern)

템플릿 메서드 패턴은 핵심 기능과 부가 기능을 분리하여 단일 책임 원칙(SRP)을 지켜 변경 지점을 하나로 모아 변경에 쉽게 대처할 수 있게 만드는 구조이다. 상속과 오버라이딩을 통한 다형성으로 부모 클래스에 부가 기능(템플릿)을 정의하고 핵심 기능을 자식 클래스에 정의한다.

작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기한다. 템플릿 메서드를 사용하면 하위클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있다.

템플릿 메서드 패턴은 자식 클래스를 여러개 만들어줘야 하는 단점이 있다. 이런 단점을 보완하기 위해 익명 내부 클래스를 사용한다.

익명 내부 클래스를 구현하면 객체 인스턴스를 생성하면서 동시에 생성할 클래스를 상속 받은 자식 클래스를 정의할 수 있다.

하지만, 자식 클래스는 부모 클래스의 기능을 사용하지 않지만 부모 클래스 의존하여 강결합 되어 있다. 부모 클래스에 의존하여 부모 클래스가 변경되면 자식 클래스도 수정되어야 한다. 또한, 상속 구조로 별도의 클래스나 익명 내부 클래스를 만들어야 해서 복잡하다.

이러한 문제를 보완하기 위해 전략 패턴을 사용한다.

 

code