Причина использования ОБЕИХ абстрактных классов и интерфейсов? (Абстрактный класс реализует интерфейс)

Недавно я наткнулся на любопытный паттерн в каком-то коде. Мы знаем, что для всего есть свое время и место, особенно когда речь идет об ABC и интерфейсах, но мне это кажется лишним.

  // This describes a person....
  public interface IPerson
  {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int BasePay { get; set; }
    public string Address { get; set; }
  }

  // And so does this, but it also uses the interface....
  public abstract class Person : IPerson
  {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int BasePay { get; set; }
    public string Address { get; set; }
  }

  // This uses both ?!
  public class CoalMiner : Person, IPerson
  {
    public CoalMiner()
    {
      BasePay = 10000;
    }
  }

Кто-нибудь может подумать, в чем конкретное преимущество использования и ABC и интерфейс, определяющий одни и те же элементы?

23
задан A.R. 11 November 2011 в 22:45
поделиться