Someone may think that interface, the more the better, but not indeed:
- 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
- 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
- if all interface, then it will make all objects not difference, all expose as interface