모종닷컴

디자인 패턴3 - Template pattern 본문

Programming/디자인패턴

디자인 패턴3 - Template pattern

모종 2018. 5. 18. 03:01
반응형

학습 목표

  • 일정한 프로세스를 가진 요구사항을 템플릿 메소드 패턴을 이용하여 구현

탬플릿 메소드 패턴 : 알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴.
                            -> 변하지 않는 기능은 슈퍼클래스에서 만들어주고 자주 변경되어 확장할 기능은 서브클래스에서 만든다.

 


언제 쓰일까?

 - 구현하려는 알고리즘이 일정한 프로세스가 있다.

 - 구현하려는 알고리즘이 변경 가능성이 있다. 


어떤 단계로 써야 할까?

 - 알고리즘을 여러 단계로 나눈다.

  ex) 게임에 접속 시 아이디 비밀번호 로그인 과정, 해당 회원의 등급(회원, 관리자) 확인 과정, 연결 과정


 - 나눠진 알고리즘의 단계를 메소드로 선언한다.

  ex) 위의 로그인 과정, 등급 확인 과정, 연결 과정 들을 각 각 메소드로 정의.


 - 알고리즘을 수행할 템플릿 메소드를 만든다.

  ex) 하나의 메소드 안에 이 과정들을 담는다.


 - 하위 클래스에서 나눠진 메소드들을 구현한다.

  ex) 나눠진 알고리즘의 단계를 하위 클래스들이 구현한다.




AbstGameConnectHelper클래스의 requestConnection 메소드는 abstract로 선언한 메소드들을 담고 있는 템플릿 메소드입니다.

DefaultGameConnectHelper클래스는 위의 클래스를 상속받은 클래스로 각 각의 나눠진 메소드들을 정의하는 클래스입니다. 


이렇게 구현이 되었다고 생각했을 때 , 보안 과정에 추가적인 문제를 선언해야 한다면 프로세스(requestConnection)를 변경할 필요없이 DefaultGameConnectHelper클래스의 doSecurity메소드만 재정의하면 된다는 것이다. 


템플릿 메소드의 정의를 다시 한번 보도록 하자


"알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴"



[출처 : https://www.youtube.com/watch?v=qr7I18Lhsl8]

반응형