|
|||
Паттерн «Стратегия». public void sort(int[] numbers);. Override. int i, j, first, temp;. if (compare(numbers[j],numbers[first])). temp = numbers[first];. numbers[first] = numbers[i];. numbers[i] = temp;. private SortingStrategy strategy;Стр 1 из 2Следующая ⇒ Паттерн «Стратегия» Условие задачи. Проблема. Необходимо выполнить сортировку массива по выбранному пользователем алгоритму. Требуется создать программу, которая выполняет сортировку массива чисел/символов/объектов по одному из предложенных алгоритмов.
Пояснение к решению задачи 1. Определите интерфейс , включающий метод сортировки public interface SortingStrategy { public void sort(int[] numbers); boolean compare(int a, int b) { if(a < b) return true; else return false; } } 2. Реализуйте классы конкретных стратегий для различных методов сортировки, например, public class SelectionSort implements SortingStrategy { @Override public void sort(int[] numbers) { int i, j, first, temp; for (i = numbers.length - 1; i > 0; i--) { first = 0; for (j = 1; j <= i; j++) { if (compare(numbers[j],numbers[first])) first = j; } temp = numbers[first]; numbers[first] = numbers[i]; numbers[i] = temp; } } }
3. Создайте класс Context для управления выбором конкретной стратегии public class SortingContext { private SortingStrategy strategy; public void setSortingMethod(SortingStrategy strategy) { this.strategy = strategy; } public SortingStrategy getStrategy() { return strategy; } public void sortNumbers(int[] numbers){ strategy.sort(numbers); } } 4. Реализуйте графический интерфейс пользователя, отражающий исходный и отсортированный массив, а также кнопки "Заполнить", "Сортировать", "Найти". Для выбора метода сортировки и критерия поиска используйте Переключатели. Включите использование объекта SortingContext в обработчик кнопки "Сортировать".
|
|||
|