Nedostatak MI se moze prevazici delegiranjem.
Problem je sto delegacija ne moze da zameni potpuno nasledjivanje posto se gubi
polimorfizam sa strane klase koja nije nasledjena vec delegirana.
I ovo se dosta cesto, kada je neophodno, moze prevazici doslednom primenom
'programiranja prema interfejsu'. Npr. i bazna i izvedena klasa implementiraju
isti interfejs (interfejse) a ostatak programa se objektima tih klasa obraca iskljucivo
prema interfejsu.
Inace, sa onim da je MI nepotrebno se ne slazem.
Jeste da je skoro uvek dovoljno jedan ili vise intefejsa + jedna apstraktna klasa
(u C++-u je ovo MI). Medjutim, kao i neke druge stvari u C++-u (RTTI, na primer)
veoma retko zatreba ali kad zatreba veoma je dosadno raditi na drugi nacin,
iako je to, naravno, uvek moguce.
Uz to, postoje jos par dobrih razloga zasto MI moze da bude korisno.
Npr. moguce je praviti interfejse koji proveravaju pre i post conditions.
Dodatno, uz sablone MI pruza neke interesantne mogucnosti.
Od losih strana - naivna upotreba MI zacas dovede do nepotrebno komplikovanog dizajna.