👣 문제 상황
특정 클래스의 메서드를 자주 변경해야 하는 경우가 존재할 수 있다.
물론 해당 행위를 미리 규정한 클래스를 새롭게 정의해도 괜찮다.
하지만 해당 패턴은 굳이 새롭게 클래스를 모두 만들기보다 딱 메서드의 행위만 새롭게 정의하고 싶을 때,
사용할 수 있다는 장점이 있다.
목적: 특정 메서드의 유연성 향상
👣 해결 방법
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 |