ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [GoF Design Pattern] 전략 패턴 (Strategy Pattern)
    Design Pattern 2023. 9. 22. 00:46
    반응형

     

    GoF Design Pattern에 대한 설명은 아래 포스트를 참고해주세요.

     

     

    https://developer-been.tistory.com/41

     

    [GoF Design Pattern] 디자인 패턴

    디자인 패턴 디자인 패턴은 모듈의 세분화된 역할이나 모듈들 간의 인터페이스 구현 방식을 설계할때 참조할 수 있는 전형적인 해결 방식을 말합니다. 디자인 패턴을 통해 설계 문제, 해결 방법

    developer-been.tistory.com

     

     

    전략 패턴 (Strategy Design Pattern)

    전략 패턴(Strategy Pattern)은 객체 지향 디자인 패턴 중 하나로, 알고리즘을 정의하고 해당 알고리즘을 캡슐화하여 교체 가능하게 만드는 패턴입니다. 이를 통해 동일한 작업을 수행하는 여러 알고리즘을 선택적으로 사용할 수 있게 됩니다. 아래는 전략 패턴을 설명하기 위한 간단한 예시입니다.

     

     

    예시: 정렬 알고리즘 선택하기

    전략 패턴을 사용하여 여러 정렬 알고리즘을 선택하는 간단한 예를 살펴보겠습니다.

     

    1. 전략(Strategy) 인터페이스 정의:

    public interface SortingStrategy {
        void sort(int[] data);
    }

     

    2. 전략을 구체화한 클래스들 생성:

    public class BubbleSort implements SortingStrategy {
        @Override
        public void sort(int[] data) {
            // 버블 정렬 알고리즘 구현
        }
    }
    
    public class QuickSort implements SortingStrategy {
        @Override
        public void sort(int[] data) {
            // 퀵 정렬 알고리즘 구현
        }
    }
    
    public class MergeSort implements SortingStrategy {
        @Override
        public void sort(int[] data) {
            // 합병 정렬 알고리즘 구현
        }
    }

     

    3. 전략을 사용하는 클래스(컨텍스트) 정의:

    public class Sorter {
        private SortingStrategy sortingStrategy;
    
        public void setSortingStrategy(SortingStrategy sortingStrategy) {
            this.sortingStrategy = sortingStrategy;
        }
    
        public void sortData(int[] data) {
            sortingStrategy.sort(data);
        }
    }

     

    4. 사용 예제:

    public class Main {
        public static void main(String[] args) {
            int[] data = {5, 2, 8, 1, 9};
    
            Sorter sorter = new Sorter();
    
            // 버블 정렬 선택
            sorter.setSortingStrategy(new BubbleSort());
            sorter.sortData(data);
    
            // 퀵 정렬 선택
            sorter.setSortingStrategy(new QuickSort());
            sorter.sortData(data);
    
            // 합병 정렬 선택
            sorter.setSortingStrategy(new MergeSort());
            sorter.sortData(data);
        }
    }

     

    ✍️ 마무리

    이 예제에서는 정렬 알고리즘을 선택하기 위해 전략 패턴을 사용했습니다. 

    SortingStrategy 인터페이스를 정의하고, 각 정렬 알고리즘을 해당 인터페이스를 구현하는 클래스로 만들었습니다. 

    그런 다음 Sorter 클래스를 사용하여 정렬 알고리즘을 동적으로 선택할 수 있습니다. 

    이를 통해 알고리즘을 교체하거나 추가하기가 쉬워지며, 코드의 확장성과 유지 보수성이 향상됩니다.

    반응형

    'Design Pattern' 카테고리의 다른 글

    [GoF Design Pattern] 디자인 패턴  (0) 2023.09.22

    댓글

Designed by Tistory.