Четверг
25-04-2024
08:11
Главная страница
Каталог статей
Информист Приветствую Вас Гость | RSS
Регистрация
Вход
Меню сайта

Категории каталога
Delphi [3]
C++ [5]
Java [28]
программирование на Java
Assembler [4]
Алгоритмы на ассме
C# [1]
Eclipse [1]

Наш опрос
Что Вы веберете
Всего ответов: 230

Копилка
Если вам понравился наш сайт или вы нашли полезную информацию, то у вас есть возможность отблагодарить администрацию.

Начало » Статьи » Programming » Java

Шаблонный метод

Классический шаблонный метод реализуется через один абстрактный класс с зашитым алгоритмом и множество дочерних классов с переопределенными методами-шагами алгоритма. Есть другой вариант реализации этого шаблона, он подойдет для случаев, когда нет необходимости построения иерархии классов или это попросту нецелесообразно. Для этого объявляется внутренний скрытый интерфейс, скрытый метод базового алгоритма и множество методов для модификации базового алгоритма. Расширяющие методы вызывают базовый метод и передают в него объект безымянного класса, реализующего скрытый интерфейс с соответствующим кодом переопределенного шага алгоритма. Далее пример с двумя методами получения мин/макс значений:

public class TestO {
	private interface MinMaxComparator {
		boolean compare(int i1, int i2);
	}

	private int get(List list, MinMaxComparator comparator) {
		int retval = 0;
		for (Integer value : list) {
			if (comparator.compare(retval, value)) {
				retval = value;
			}
		}
		return retval;
	}

	public int min(List list) {
		return get(list, new MinMaxComparator() {
			@Override
			public boolean compare(int i1, int i2) {
				return i1 & gt; i2;
			}
		});
	}

	public int max(List list) {
		return get(list, new MinMaxComparator() {
			@Override
			public boolean compare(int i1, int i2) {
				return i1 & lt; i2;
			}
		});
	}
}

Не следует путать шаблоны "Шаблонный метод" и "Callback" - они принципиально отличаются (как это сделали в русской википедии в разделе "Зачем использовать функции обратного вызова"). В шаблонном методе, в данном случае, передается объект, несущий некую функциональность важную для выполнения алгоритма, в коллбеке же передается объект по которому можно отправить результат или просто сообщить о завершении выполнения метода, т.е. callback-объект никак не влияет на результат.

Категория: Java | Добавил: Judge (22-12-2012)
Просмотров: 1956 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Поиск по каталогу
Яндекс


Поиск по Информисту

Наша кнопка


Друзья сайта

Статистика


Copyright MyCorp © 2006Сайт создан в системе uCoz