[design pattern] 템플릿 메소드 패턴
- WEB/JAVA
- 2020. 7. 28. 23:57
- 알고리즘을 단계별 메소드로 나눈다! ( Operation1(), Operation2(), Operation3() );
- 알고리즘을 수행할 템플릿메소드를 만든다.
- 하위 클래스에서 메소드 구현
요구사항
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("아이디 암호 등 접속 정보");
}
}
'WEB > JAVA' 카테고리의 다른 글
[Design pattern]프록시 패턴 (0) | 2020.07.29 |
---|---|
[Design Pattern] 팩토리 메소드 패턴 (0) | 2020.07.29 |
[예외처리]Checked Exception, unChecked Exception (0) | 2020.07.22 |
Wrapper 클래스 개념과 사용하는 이유 (0) | 2020.07.20 |