[자바 디자인 패턴] 행동패턴 - 템플릿 패턴

2021. 3. 16. 00:20 JAVA/Design Patterns

행동패턴 목록

여기서 초점을 둘 부분은 final 로 만들어둔 변경 불가능한 프로세스 함수인 play() 이다. 고정되어있는 순서로 프로세스를 적용하려면 아래와 같이 final로 지정해 두는 것이 훨씬 효과적일 것 같다. 또한 이런 템플릿을 만들어 사용하는 경우에는 너무 구체적으로 만드는 경우에는 같이 개발하는 사람이 힘들 수 있기 때문에 체계적인 템플릿 작성이 필요하다.

 

장점

 - 코드 재사용을 위한 매우 일반적인 기술이다.  즉 코드를 재사용할 수 있는 것이 장점이다.

 

사용시기

 - 중복을 피하여 서브클래스간의 공통 동작을 단일 공통 클래스로 이동해야 할 때 사용됩니다.

 

UML

Template Class : Game

public abstract class Game {  
    abstract void initialize();  
    abstract void start();  
    abstract void end();  
    
    public final void play(){  
          initialize();  
          start();  
          end();  
    }  
}

 

Template extends Class : Chess, Soccer

public class Chess extends Game {  
    @Override  
    public void initialize() {  
        System.out.println("Chess Game Initialized! Start playing.");  
    }  
    
    @Override  
    public void start() {  
        System.out.println("Game Started. Welcome to in the chess game!");  
    }  
    
    @Override  
    public void end() {  
        System.out.println("Game Finished!");  
    }
}
public class Soccer extends Game {  
    @Override  
    public void initialize() {  
        System.out.println("Soccer Game Initialized! Start playing.");  
    }  
    
    @Override  
    public void start() {  
        System.out.println("Game Started. Welcome to in the Soccer game!");  
    }  
    
    @Override  
    public void end() {  
        System.out.println("Game Finished!");  
    }
}

 

Operation Class : TemplatePatternDemo

public class TemplatePatternDemo {  
    public static void main(String[] args) {
        Class c = Class.forName("com.study.template.Soccer");
        Game game=(Game) c.newInstance();  
        game.play();     
    }  
}

 

출처 : https://www.javatpoint.com/

know-one-by-one.tistory.com/60