[design pattern] 템플릿 메소드 패턴

  1. 알고리즘을 단계별 메소드로 나눈다! ( Operation1(), Operation2(), Operation3() );
  2. 알고리즘을 수행할 템플릿메소드를 만든다.
  3. 하위 클래스에서 메소드 구현

요구사항

1. 신작 게임의 접속 구현

- requestConnection(String str) : String

  • 유저가 접속시 다음을 고려
  • 보안: 보안 처리, 인증: id/pwd 확인, 권한: 유료회원인지 무료회원인지 확인, 접속: 접속자에게 커넥션정보 넘김

추상화 클래스 ( 알고리즘의 단계별 메소드, 정의된 메소드를 이용한 템플릿 메소드 작성 );

public abstract class AbstGameConnectHelper {
  protected abstract String doSecurity(String string);
  protected abstract boolean authentication(String id, String password);
  protected abstract int authorization(String userName);
  protected abstract String connection(String info);

   // 템플릿 메소드

   public String requestConnection(String str){

         //보안작업 -> 암호화 된 문자열을 복호화
         String decodedInfo = doSecurity(str);

         //반환된 것을 가지고 아이디, 암호를 할당한다.
        String userName = "userName";
        int i = authorization (userName);

       switch(i){
           case 0: // 매니저
                break;
           case 1: //유료회원
                break;
           case 2 : //무료회원
                break;
      }
      return connection(decodeInfo);

   }

}

하위 상속 코드

public class DefaultGameConnectHelper extends AbstGameConnectHelper{

   @Override
   protected String doSecurity(String string){
      System.out.println("디코드");
      return 1;
   }

 @Override 
 protected String authorization(String string){
      System.out.println("권한 확인");
      return 0;
   }

   @Override
   protected String connection(String string){
      System.out.println("접속단계");
      return null;

   }
}

메인 코드

public class Main{
    public static void main(String\[\] args){
          AbstGameConnectHelper helper = new DefaultGameConnectHelper();
          helper.requestConnection("아이디 암호 등 접속 정보");
    }
}

댓글

Designed by JB FACTORY