디자인 패턴

Strategy Pattern - 행위

iksadnorth 2023. 7. 19. 15:55

👣 문제 상황

특정 클래스의 메서드를 자주 변경해야 하는 경우가 존재할 수 있다.
물론 해당 행위를 미리 규정한 클래스를 새롭게 정의해도 괜찮다.
하지만 해당 패턴은 굳이 새롭게 클래스를 모두 만들기보다 딱 메서드의 행위만 새롭게 정의하고 싶을 때,
사용할 수 있다는 장점이 있다.

목적: 특정 메서드의 유연성 향상

👣 해결 방법

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

class BubbleSortStrategy implements SortingStrategy {
    @Override
    public void sort(int[] numbers) {
        // Bubble Sort 구현
    }
}

class QuickSortStrategy implements SortingStrategy {
    @Override
    public void sort(int[] numbers) {
        // Quick Sort 구현
    }
}

class Array {
	int[] numbers;
    
    public Array(int[] numbers) {
    	this.numbers = numbers;
    }

    public void sort(SortingStrategy strategy) {
        strategy.sort(numbers);
    }
}

public class Main {
    public static void main(String[] args) {
        int[] numbers = {5, 2, 8, 1, 9};
        Array arr = new Array(numbers);

        arr.sort(new BubbleSortStrategy());
        arr.sort(new QuickSortStrategy());
    }
}

👣 결과

특정 메소드의 재사용성 및 유연성 향상.

'디자인 패턴' 카테고리의 다른 글

Proxy Pattern - 구조  (0) 2023.07.19
Observer Pattern - 행위  (0) 2023.07.19
Factory Pattern - 생성  (0) 2023.07.19
Singleton Pattern - 생성  (0) 2023.07.19
디자인 패턴이란?  (0) 2023.07.19