CS/디자인 패턴

Template Method

bonevillain 2023. 9. 16. 11:31

상위 클래스에서 필요한 Method들을 가지고 특정한 기능 수행을 위한 절차 또는 코드는 이미 구현되어있고

하위 클래스에서 각 절차에 필요한 Method들을 구현하는 패턴

 

Template Method 패턴은 이름 그대로 Template 형판, 견본이 있는 Method가 있고 각각에 필요한 메소드는 하위클래스에서 구현해준다.

 

예제

파일을 입력받아 데이터 내용만을 추출해야하는 기능이 있는데 파일 종류가 PDF, Excel, Word, txt 여러 종류가 있으면 데이터 타입에 따라 읽는 방식은 달라진다. 예를 들어, txt는 그냥 그대로 읽어오면 되지만 Excel 같은 경우, 쉼표로 각 데이터가 구분되어 있으니 쉼표를 구분자로 파싱을 해줘야한다.

 

public abstract class AbstractExtractor {
    // Template Method에 해당
    public final void Run() {
        file = openFile();
        data = readData(file);
        result = sendData(data);
        log.info(result);
        closeFile(file);
    }
    public abstract File openFile() // Step 1
    public abstract Data readData() // Step 2
    public abstract boolean sendData() // Step 3
    public abstract void closeFile() // Step 4
}

public class ExcelExtractor extends AbstractExtractor {
    public File openFile() { 파일 열고 ... }
    public Data readData() { 쉼표 등 필요없는 문자열은 제거해주고 ... }
    public boolean sendData() { 엑셀전용 저장소에 전달 ... }
    public void closeFile() { 파일 종료 }
}

public class TextExtractor extends AbstractExtractor {
    public File openFile() { 파일 열고 ... }
    public Data readData() { 모든 문자열 가져와서 ... }
    public boolean sendData() { 일반텍스트 전용 저장소에 전달 ... }
    public void closeFile() { 파일 종료 }
}

 

 

[참조]

https://refactoring.guru/design-patterns/template-method

'CS > 디자인 패턴' 카테고리의 다른 글

Factory Method  (0) 2023.09.16
디자인 패턴 종류  (0) 2023.09.16