Проблема проверки условий

Automatically generated description.

Имеется 4 условия, 5 действий и 6 наборов условий. Необходимо выполнить различные действия в зависимости от истинности разного их набора. Причём нельзя нарушать порядок действий. То есть действие 1 должно быть выполнено до действий 2 и 3.

if(L1)
  DO1;
if(L2)
  DO1;
if(L1&&L3)
  DO2;
if(L2&&L3)
  DO3;
if(L1&&L4)
  DO4;
if(L2&&L4)
  DO5;

Требуется сделать это с наименьшим повторением кода (следуя принципу DRY).

Текущее решение:

if(L3)
  if(L1||L2)
    DO1;
  if(L1)
    DO2;
  if(L2)
    DO3;
if(L4)
  if(L1)
    DO4;
  if(L2)
    DO5;