package ru.hflabs.rcd.service;
/**
* Интерфейс <class>IMergeService</class> декларирует методы сервиса слияния сущностей
*
* @param <F> источник
* @param <T> назначение
* @param <R> результат слияния
*/
public interface IMergeService<F, T, R> {
/**
* Выполняет слияние сущностей
*
* @param newEssence новая сущность
* @param oldEssence старая сущность
* @return Возвращает слитую сущность
*/
R merge(F newEssence, T oldEssence);
/**
* Интерфейс <class>Single</class> реализует маркерный интерфейс для слияния сущностей одного типа
*
* @param <E> класс сущностей
*/
interface Single<E> extends IMergeService<E, E, E> {
}
}