Microsoft has traditionally believed in abstractions (i.e. interfaces) while Apple believe in concrete implementations. Abstractions are flexible but always leak and therein lies the problems.
I think the interface approach made sense I earlier days of computing. These days it is better to make a zillion, exactly the same computer like Apple does.