22.03.02_템플릿메소드패턴_패턴소개
본문 바로가기
CS Study/디자인패턴

22.03.02_템플릿메소드패턴_패턴소개

by KyeongMin 2022. 3. 3.
728x90
반응형
  • 알고리즘의 구조를 어떤 과정을 알고리즘이라고 하는 그 구조를 읽고 오고 처리하는 처리하는 것을
    • 템플릿으로 제공하고 그중에서 구체적인 방법 제공하는 방법 처리하는 방법 출력하는 방법등을 서브 클래스가 구체적으로 구현할 수 있게 하는 패턴
  • 상속을 사용하고 이패턴이 필요해지는 상황을 소스코드로 보자
public clas Client{
  public static void main(String[] args){
    FileProcessor fileProcessor = new FileProcessor("number.txt");
    int result = fileProcessor.process();
    System.out.println(result);
  }
}

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileProcessor{
  private String path;
  public FileProcessor(String path){
    this.path = path;
  }
  
  public int process(){
    try(BufferedReader reader = new BufferedReader(new FileReader(path))){
      int result = 0;
      String line = null;
      while((line = reader.readLine()) != null){
        result += Integer.parseInt(line);
      }
      return result;
    }catch(IOException e){
      throw new IllefalArgumentException(path + "에 해당하는 파일이 없습니다.",e);
    }
  }
}
  • 알고리즘 구조를 서브 클래스가 확장할 수 있도록 템플릿으로 제공하는 방법
    • 추상 클래스는 템플릿을 제공하고 하위 클래는 구체적인 알고리즘을 제공

https://github.com/3DPIT/study/blob/master/05.%EC%BD%94%EB%94%A9%EC%9C%BC%EB%A1%9C%ED%95%99%EC%8A%B5%ED%95%98%EB%8A%94GoF%EC%9D%98%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4/03.%ED%96%89%EB%8F%99%EA%B4%80%EB%A0%A8%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4/10.%ED%85%9C%ED%94%8C%EB%A6%BF%EB%A7%A4%EC%86%8C%EB%93%9C%ED%8C%A8%ED%84%B4/22.03.02_1.%ED%85%9C%ED%94%8C%EB%A6%BF%EB%A9%94%EC%86%8C%EB%93%9C%ED%8C%A8%ED%84%B4_%ED%8C%A8%ED%84%B4%EC%86%8C%EA%B0%9C/22.03.02_%ED%85%9C%ED%94%8C%EB%A6%BF%EB%A9%94%EC%86%8C%EB%93%9C%ED%8C%A8%ED%84%B4_%ED%8C%A8%ED%84%B4%EC%86%8C%EA%B0%9C.md

 

GitHub - 3DPIT/study

Contribute to 3DPIT/study development by creating an account on GitHub.

github.com

 

728x90
반응형

댓글