JAVA

[JAVA] 디자인 패턴 - Strategy

P.젤리비 2022. 8. 4.
반응형

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

댓글

💲 추천 글