🙂2022.08.27

일일 회고 17일차

할일 및 한일

경험 및 배움

디자인 패턴 8장(템플릿 메소드 패턴)

이번에 공부한 디자인 패턴은 템플릿 메소드 패턴이다.

템플릿 메소드 패턴(Templete Method Pattern)

  • 템플릿 메소드 패턴은 알고리즘의 골격을 정의한다.

  • 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있다.

  • 알고리즘의 구조는 그대로 유지하면서, 특정 단계를 서브클래스에서 재정의할 수도 있다.

템플릿 메소드 패턴은 간단히 얘기하면, 알고리즘의 템플릿(틀)을 만든다. 예를 들어 홍차를 만드는 클래스와 커피를 만드는 클래스가 존재한다.

그럼 그 두 클래스에서 물을 끓인다거나, 커피 또는 찻잎을 우려내는 것, 컵에 따르고 첨가물을 추가하는 것과 같은 일련의 과정들은 공통적으로 존재한다.

템플릿 메소드 패턴은 그 공통적인 과정(알고리즘)들을 추상 메소드로 정의하고, 그 추상 메소드는 서브 클래스에서 정의한다.

이 과정에서 나는 추상 메소드에 대한 지식이 부족하여 추가적으로 찾아보았다.

추상 메소드란 자식 클래스에서 반드시 오버라이드해야만 사용할 수 있는 클래스로, 몇 가지 장점과 사용하는 상황이 있다. 추상 메소드를 사용하는 목적은 추상 메소드가 포함되어 있는 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하게 함에 목적이 있다.

추상 메소드를 사용하면 중복되는 부분, 공통적인 부분은 미리 만들어 놓고, 이를 사용하는 자식 클래스에서는 필요한 부분을 재정의하여 사용함으로써 생산성을 늘리고 확장이나 유지보수가 쉬워질 수 있다.

책에서는 공통적인 과정이지만, 홍차 클래스와 커피 클래스에서 다르게 처리하는 부분을 추상 메소드로 선언하였다.

public abstract class CaffeineBeverage {
    
    ...
    
    abstract void brew();
    
    abstract void addCondiments();
    
    ...

}

자세한 내용은 notion에 정리되어 있다.

개선 및 목표

  • 디자인 패턴 세미나가 종료되면 프로젝트를 구현해야 하니 지난 패턴들도 다시 복습하자.

  • 주말 안에 Java 로그인 구현 프로그램을 마무리하자.

Last updated