GoF 디자인패턴 - Strategy

Clean Code Big Poo·2025년 6월 3일
0
post-thumbnail

Overview

디자인패턴 시작하기를 보고 정리하기

Strategy

  • 전략 패턴
  • 상대적으로 가장 단순한 패턴
  • 어떤 하나의 기능을 구성하는 특정 부분을 실행 중에 다른 것을 변경할 수 있는 방안을 제공

Diagram

  • SumPrint: 1부터 어떤 수까지 총 합을 출력하는 클래스
  • 총 합을 sumStategy 인터페이스를 통해 얻어옴
  • simpleSumStrategy, GaussSumStrategy: sumStategy를 구현한 클래스. 1부터 어떤 수까지의 합을 구하는 코드
  • SumPrint 는 sumStategy 인터페이스만을 알고 있다. 추후에 합을 구하는 클래스가 추가되었을때, SumPrint는 변경할 필요가 없다.

구현 코드

SumStrategy Interface

public interface SumStrategy {
    int get(int N);
}

GaussSumStrategy class

public class GaussSumStrategy implements SumStrategy{
    @Override
    public int get(int N){
        return  (N+1)*N/2;
    }
}

SimpleSumStrategy class

public class SimpleSumStrategy implements SumStrategy{
    @Override
    public int get(int N){
        int sum = N;

        for(long i = 1; i < N; i++){
            sum += i;
        }
        return  sum;
    }
}

SumPrinter

public class SumPrinter {
    void print(SumStrategy strategy, int N){
        System.out.printf("The Sum of 1 - %d : ", N);
        System.out.println(strategy.get(N));
    }
}

Main

public class Main {
    public static void main(String[] args){
        SumPrinter cal = new SumPrinter();
        
        cal.print(new SimpleSumStrategy(), 10);
        cal.print(new GaussSumStrategy(), 10);
    }
}
//The Sum of 1 - 10 : 55
//The Sum of 1 - 10 : 55

0개의 댓글