Java Design Pattern Strategy

Java Design Pattern Strategy

Java로 구현하는 Strategy Pattern을 정리한다.

1. Java Strategy Pattern

Strategy Pattern은 서로 다른 알고리즘(Strategy)을 별도의 Class로 정의하고, 정의한 Class를 서로 교환해서 사용할 수 있도록 만든는 Pattern을 의미한다. 다양한 알고리즘을 유연하게 변경하면서 이용하고 싶을때 Strategy Pattern이 이용된다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// operation
public interface Operation {
   public int doOperation(int n1, int n2);
}

public class OperationAdd implements Operation {
   @Override
   public int doOperation(int n1, int n2) {
      return n1 + n2;
   }
}

public class OperationSub implements Operation{
   @Override
   public int doOperation(int n1, int n2) {
      return n1 - n2;
   }
}

// operator
public class Operator {
   private Operation operation;

   public Operator(Operation operation){
      this.operation = operation;
   }

   public int execute(int n1, int n2){
      return operation.doOperation(n1, n2);
   }
}

// main
public class Main {
    public static void main(String[] args) {
        Operator operatorAdd = new Operator(new OperationAdd());
        Operator operatorSub = new Operator(new OperationSub());

        operatorAdd.execute(10, 5); // 15
        operatorAdd.execute(10, 5); // 5
    }
}
[Code 1] Java Strategy Pattern

[Code 1]은 Java로 구현한 간단한 Strategy Pattern을 나타내고 있다. OperationAdd, OperationSub Class는 Operation Interface를 구현하는 구상 Class이며, 서로 다른 알고리즘(Strategy)을 갖고 있는 Class이다. Operator Class는 알고리즘을 가지고 있는 Operation Class를 Parameter로 받아서 이용하고 있는것을 확인할 수 있다.

2. 참조