반응형
Strategy Pattern
- 전략 패턴으로 불리며, 객체지향의 꽃이다.
- 유사한 행위들을 캡슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만 변경하여, 유연하게 확장하는 패턴
- SOLID중에서는 개방폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)를 따른다.
- 전략 메서드를 가진 객체(Normal Strategy, Base64 Strategy)
- 전략 객체를 사용한 컨텍스트(Encoder)
- 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트
EncodingStrategy.java
public interface EncodingStrategy {
String encode(String text);
}
NormalStrategy.java
public class NormalStrategy implements EncodingStrategy {
@Override
public String encode(String text) {
return text;
}
}
Base64Strategy.java
import java.util.Base64;
public class Base64Strategy implements EncodingStrategy {
@Override
public String encode(String text) {
return Base64.getEncoder().encodeToString(text.getBytes());
}
}
AppendStrategy.java
public class AppendStrategy implements EncodingStrategy {
@Override
public String encode(String text) {
return "ABCD" + text;
}
}
Encoder.java
public class Encoder {
private EncodingStrategy encodingStrategy;
public String getMessage(String message) {
return this.encodingStrategy.encode(message);
}
public void setEncodingStrategy(EncodingStrategy encodingStrategy) {
this.encodingStrategy = encodingStrategy;
}
}
DemoApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
Encoder encoder = new Encoder();
//base64
EncodingStrategy base64 = new Base64Strategy();
//normal
EncodingStrategy normal = new NormalStrategy();
String message = "hello java";
encoder.setEncodingStrategy(base64);
String base64Result = encoder.getMessage(message);
System.out.println(base64Result);
encoder.setEncodingStrategy(normal);
String normalResult = encoder.getMessage(message);
System.out.println(normalResult);
encoder.setEncodingStrategy(new AppendStrategy());
String appendResult = encoder.getMessage(message);
System.out.println(appendResult);
}
}
Base64 관련 글
https://nowonbun.tistory.com/476
[Java] Base64 인코딩, 디코딩하는 방법
안녕하세요. 명월입니다. 이 글은 Java에서 Base64를 다루는 방법을 설명한 글입니다. 먼저 base64에 대해서 설명하겠습니다. base64는 원래는 복잡한 이유와 설명이 있는 데 간단하게 설명하면 우리가
nowonbun.tistory.com
반응형
'JAVA' 카테고리의 다른 글
[JAVA] URI 설계 패턴 (0) | 2022.08.05 |
---|---|
[JAVA] REST API (0) | 2022.08.04 |
[JAVA] 디자인 패턴 - Facade (0) | 2022.08.04 |
[Java] 디자인 패턴 - Observer (0) | 2022.08.03 |
[JAVA] 디자인 패턴 - Decorator (0) | 2022.08.03 |
댓글