- [디자인 패턴] 10. 전략패턴 예제: UTF-8 인코딩/디코딩2024년 09월 27일
- Song hyun
- 작성자
- 2024.09.27.:53
728x90반응형[디자인 패턴] 10. 전략패턴 예제: UTF-8 인코딩/디코딩
-전략 패턴을 사용해 인코딩/디코딩 메서드를 만들어보자.
package strategy; import java.util.Base64; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class StrategyTest { public static void main(String[] args) { // 클라이언트 측 코드 String message = "테스트문자열"; // 1. 텍스트를 인코딩 하는 클래스를 메모리에 올린다. Encoder encoder = new Encoder(); // 인코딩 해보기 UTF8EncodeStrategy utf8EncodeStrategy = new UTF8EncodeStrategy(); encoder.setEncodingStrategy(utf8EncodeStrategy); String encodedMessage = encoder.getMessage(message); System.out.println("~~~~~~~~~~~"); System.out.println(encodedMessage); // 디코딩 해보기 UTF8DecodeStrategy utf8DecodeStrategy = new UTF8DecodeStrategy(); encoder.setEncodingStrategy(utf8DecodeStrategy); String decodedMessage = encoder.getMessage(message); System.out.println("~~~~~~~~~~~"); System.out.println(decodedMessage); } // end of main } // 인코딩 전략 인터페이스 interface EncodingStrategy { String encode(String text); } // UTF-8 인코딩 전략 class UTF8EncodeStrategy implements EncodingStrategy { @Override public String encode(String text) { try { text = URLEncoder.encode(text, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println("인코딩된 값"+text); return text; } } // UTF-8 디코딩 전략 class UTF8DecodeStrategy implements EncodingStrategy { @Override public String encode(String text) { try { text = URLDecoder.decode(text, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println("디코딩된 값"+text); return text; } } // 핵심 ! - 클라이언트 클래스 class Encoder { // 1. 추상화 (멤버 ) private EncodingStrategy encodingStrategy; // 2. // 전략에 따라 메세 지를 인코딩하여 반환 public String getMessage(String message) { return this.encodingStrategy.encode(message); } // 3. // 전략을 따라서 동적으로 전략을 선택할 수 있는 기능 public void setEncodingStrategy(EncodingStrategy encodingStrategy) { this.encodingStrategy = encodingStrategy; } }
아래와 같이 성공적으로 인코딩, 디코딩 된 것을 알 수 있다!!
728x90반응형'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 10. 전략 패턴 (1) 2024.09.27 [디자인 패턴] 9. 어댑터 패턴 (1) 2024.09.26 [디자인 패턴] 8. 팩토리 패턴 (1) 2024.09.26 [디자인 패턴] 7. 빌더 패턴 예제: 마라탕 주문하기 (0) 2024.09.26 [디자인 패턴] 7. 빌더 패턴 (0) 2024.09.26 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)