Someone may think that interface, the more the better, but not indeed:

  1. interface is action inclining, and interface supposes that it can have several implementation, if not, there's not necessary to use: IDesk, but as to a desk in detail, there's not need to have an interface like I***Desk
  2. not the more the better, for interface is action inclining and it can specify what actions should be reusable and what not. Example, IDbProvider(MSSQL, Oracle...) -> DB(not interface) -> Gateway(not interface), if you change it to IGateway, then the developer may have SQLGateway, OracleGateway... here the reuse should not be implemented at the Gateway level
  3. if all interface, then it will make all objects not difference, all expose as interface