package ru.rsdn.patterns.behavioral.command;

/**
 * Команда
 * @param <T> получатель
 */
public interface ICommand<T> {
	/**
	 * Выполнить команду над получателем
	 * @param recipient получатель
	 * @return команда, отменяющая выполненную, или пустая ссылка, если
	 * команда не может быть выполнена
	 */
	ICommand<T> execute(T recipient);
}
