it solves this concrete problem:
you have a, b, c, d of 4 different types. all over your code you have something like:
a.Process();
b.Process();
c.Process();
d.Process();
why not have them implement IProcessable, and then do
List<IProcessable> list;
foreach(IProcessable p in list)
p.Process();
this will scale much better when you add, say, 50 types of classes that all do the same thing.
Another concrete problem:
Have you ever taken a look at System.Linq.Enumerable? It defines a ton of extension methods that operate on any type that implements IEnumerable. Because anything that implements IEnumerable basically says "I support iteration in a unordered foreach-type pattern", you can define complex behaviors (Count, Max, Where, Select, etc.) for any enumerable type.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…