При разработке интерфейсов, если они должны быть настолько универсальными, насколько это возможно, или если вы попытаетесь поместить как можно больше методов, свойств в интерфейс, чтобы сохранить количество интерфейсов на низком уровне: например, лучше 1 или 2:
1) Клиент и Аренда разделены на 2 интерфейса (Данные, относящиеся только к аренде, находятся в интерфейсе Аренда, а данные, относящиеся только к клиенту, находятся в интерфейсе Клиента)
interface ICustomer
{
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
}
interface IRental: ICustomer
{
string Title { get; set; }
decimal Cost{ get; set; }
void Rent();
}
2) Поместите все данные в один интерфейс.
interface IRental
{
string Title { get; set; }
decimal Cost{ get; set; }
void Rent();
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
}
Также, что касается первого подхода, есть ли преимущество в расширении интерфейса ICustomer или в IRental должно быть свойство ICustomer, например:
interface IRental
{
ICustomer customer {get;set;}
string Title { get; set; }
decimal Cost{ get; set; }
void Rent();
}
Каковы преимущества / недостатки вышеуказанных подходов? и есть ли предпочтительный способ (более масштабируемый и обслуживаемый).