У меня есть необходимость в пересмотре методов бизнес-правил при сохранении всех предыдущих версий. Класс, в котором они содержатся, будет одинаковым, но содержание каждого метода будет другим. Я бы предпочел, чтобы у них была одна и та же подпись метода. Вызывающий будет знать версию, которую он хотел бы выполнить. Я также предпочел бы не иметь _vX в имени метода (как пример ниже). Есть лучший способ сделать это? Что-то вроде аннотации по каждому методу было бы неплохо, но в кратком тесте, который не казался возможным сделать метод достаточно уникальным.Как можно управлять версией java?
public class SomeSpecificRule {
public Response processRule_v1() {
}
public Response processRule_v2() {
}
}
Редактировать: Причина различных методов является то, что логика, содержащаяся в методах, вероятно, будет эффективной в разное время (первичный сценарий), но мы должны быть в состоянии запустить любую версию в любой момент времени (вторичные). method_v1 используется для дат x1-x2, а метод_v2 из дат x2-x3 будет общим. Тем не менее, «какую версию мы должны использовать» заданные даты и другую логику критериев, я хочу сохранить отдельно, чтобы упростить создание этих классов и дополнительных методов для других разработчиков.
Единственные негативы, которые я вижу с этим, - это количество файлов (~ 50 правил с 1-5 версиями каждый, что может быть приемлемым) и использование рефлексии или другого класса фабрики для создания конкретной версии (в отличие от просто передать номер версии и использовать переключатель). – bobtheowl2
@ bobtheowl2: Я не уверен, как вы могли избежать этой сложности. В какой-то момент, где-то в вашем коде, вам как-то придется ссылаться на правильную комбинацию версии и метода! –