Мне нужно реализовать определенные бизнес-правила с сотнями строк ниже кода
if this
then this
else if
then this
.
. // hundreds of lines of rules
else
that
Есть ли у нас шаблон дизайна, который может эффективно реализовать это или повторно использовать код, чтобы он мог применяться ко всем различным правилам. Я слышал о Specification Pattern, который создает что-то вроде ниже
public interface Specification {
boolean isSatisfiedBy(Object o);
Specification and(Specification specification);
Specification or(Specification specification);
Specification not(Specification specification);
}
public abstract class AbstractSpecification implements Specification {
public abstract boolean isSatisfiedBy(Object o);
public Specification and(final Specification specification) {
return new AndSpecification(this, specification);
}
public Specification or(final Specification specification) {
return new OrSpecification(this, specification);
}
public Specification not(final Specification specification) {
return new NotSpecification(specification);
}
}
И тогда реализация Is, And, or методов, но я думаю, что это не может спасти меня, написав if if (возможно, мое понимание неверно)...
Есть ли какой-либо лучший подход для реализации таких бизнес-правил, имеющих так много выражений if else?
EDIT: просто пример example.A, B, C и т.д. - это свойства класса. Некоторые из них имеют сходную массу других правил. Я хочу сделать общий код для этого.
If <A> = 'something' and <B> = ‘something’ then
If <C> = ‘02’ and <D> <> ‘02’ and < E> <> ‘02’ then
'something'
Else if <H> <> ‘02’ and <I> = ‘02’ and <J> <> ‘02’ then
'something'
Else if <H> <> ‘02’ and <I> <> ‘02’ and <J> = ‘02’ then
'something'
Else if <H> <> ‘02’ and <I> = ‘02’ and <J> = ‘02’ then
'something'
Else if <H> = ‘02’ and <I> = ‘02’ and <J> <> ‘02’ then
'something'
Else if <H> = ‘02’ and <I> <> ‘02’ and <J> = ‘02’ then
'something'
Else if <H> = ‘02’ and <I> = ‘02’ and <J> = ‘02’ then:
If <Q> = Y then
'something'
Else then
'something'
Else :
Value of <Z>