Методика использования SOLID Open/Closed Principle с перечислениями и валидацией

Я ищу лучшую технику, чтобы убедиться, что я следую принципу Open/Closed в следующей ситуации.

По сути, я унаследовал некоторый код, который является кошмаром для расширения, поскольку он требует так много модификаций:

public enum Basis {
 Basis1,
 Basis2
}

public class BenefitA {
 public Basis Basis {get;set;}
 public int Amount {get;set;}
}

public class BenefitB {
 public Basis Basis {get;set;}
 public int Amount {get;set;}
}

public class RequestA {
 public BenefitA {get;set;}
 public int Age {get;set;}

 public bool Validate()
 {
  if (BenefitA.Basis == Basis.Basis1 && Age > 50)
  {
   return false;
  }
  else if (BenefitA.Basis == Basis.Basis2 && Age < 50)
  {
   return false;
  }
  return true;
 }
}

Представьте, что есть еще много преимуществ и много запросов, и мне нужно добавить третье значение в перечисление Basis.

Теперь мне нужно перейти ко всем запросам и написать новую логику для нового значения.

Есть ли лучший способ сделать это?

Спасибо

0 ответов

Другие вопросы по тегам