>>Interfaces good.
>
>Why?
>
>So far they look like a nice academic exercise. I've had a number of clients quiz me on interfaces during interviews, and after I answer their questions I always ask them if they are actually using them.. So far, the answer is 'we plan to use them in the future'.
>
>>
Far from it. Now it's possible people aren't using interfaces for there own code directly, but whether they know it or not they're already using them. It's used extensively in the .NET framework.
Do you use: foreach? If so, that's the IEnumerable interface. Dispose? That's the IDispose interface. Any kind of sorting? That's IComparer. Have code which can "swap" backends? That's probably being done by passing back interfaces instead of concrete objects. WCF? LINQ? Both of those use interfaces in a big way.