디자인 패턴-전략 패턴

전략 패턴에서 클래스 동작 또는 해당 알고리즘은 런타임에 변경 될 수 있습니다. 이러한 유형의 디자인 패턴은 행동 패턴에 속합니다.

전략 패턴에서는 다양한 전략을 나타내는 객체와 전략 객체에 따라 행동이 달라지는 컨텍스트 객체를 생성합니다. 전략 개체는 컨텍스트 개체의 실행 알고리즘을 변경합니다.

이행

액션을 정의하는 Strategy 인터페이스와 Strategy 인터페이스를 구현하는 구체적인 전략 클래스 를 만들 것 입니다. Context 는 Strategy를 사용하는 클래스입니다.

데모 클래스 인 StrategyPatternDemoContext 및 전략 객체를 사용하여 배포하거나 사용하는 전략을 기반으로 Context 동작의 변화를 보여줍니다.

1 단계

인터페이스를 만듭니다.

Strategy.java

public interface Strategy {
   public int doOperation(int num1, int num2);
}

2 단계

동일한 인터페이스를 구현하는 구체적인 클래스를 만듭니다.

OperationAdd.java

public class OperationAdd implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 + num2;
   }
}

OperationSubstract.java

public class OperationSubstract implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 - num2;
   }
}

OperationMultiply.java

public class OperationMultiply implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 * num2;
   }
}

3 단계

컨텍스트 클래스를 만듭니다 .

Context.java

public class Context {
   private Strategy strategy;

   public Context(Strategy strategy){
      this.strategy = strategy;
   }

   public int executeStrategy(int num1, int num2){
      return strategy.doOperation(num1, num2);
   }
}

4 단계

Context 를 사용하여 Strategy를 변경할 때 동작의 변화를 확인 합니다.

StrategyPatternDemo.java

public class StrategyPatternDemo {
   public static void main(String[] args) {
      Context context = new Context(new OperationAdd());		
      System.out.println("10 + 5 = " + context.executeStrategy(10, 5));

      context = new Context(new OperationSubstract());		
      System.out.println("10 - 5 = " + context.executeStrategy(10, 5));

      context = new Context(new OperationMultiply());		
      System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
   }
}

5 단계

출력을 확인하십시오.

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50