《effective java》item20. prefer interfaces to abstract classes

  • Existing classes can easily be retrofitted to implement a new interface.
  • Interface are ideal for defining mixins
  • Interface allow for the construction of nonhierarchical type frameworks.
  • Interface enable safe, powerful functionality enhancements.
  • Good documentation is absolutely essential in a skeletal implementation.