Ho una classe, chiamata PolicyProvider, attualmente con la seguente interfaccia (abbreviata):
public interface IPolicyProvider
{
List<Policy> GetRenewalPolicies(Client client, int financialYear);
}
Lo scopo è abbastanza ovvio: ogni anno l'assicurazione si rinnova per il cliente e riceveranno una serie di nuove politiche.
Il fatto è che le politiche cambiano di anno in anno. Pertanto, una implementazione concreta della classe deve essere cambiata ogni anno (o modificata con un sacco di brutti "se" che valutano l'anno finanziario). Posso vedere che nel tempo questo diventerà orrendo.
In questo caso, quale modello di progettazione è più appropriato?