Objektumorientált programozó szeret interfészre programozni, ez tény. De azért nem akármilyenre.
Java-ban ráadásul az interfészek mögé rejtett implementációkat nem kell azonnal betöltenie a vmnek - csak bizonyos feltételek teljesülése esetén - elsőre általában bőven elegendő az interfész, ezért ezzel például egy program elindulását is gyorsíthatjuk, mindamellett, hogy kényelmessé teszi az életünket, és általánosabb dolgok mentén kell eligazodnunk a kódban.
Ennek az általánosításnak is szükségszerűen meg kell állnia valahol, kinek-kinek hol a határ a megérthető absztrakció és a megértést és feldolgozást már zavaró absztrakció közt. A csodainterfész talán ennek az általánosításnak az omegája.
Lássuk csak miről beszélünk:
interface Magical{
Azthiszem mindenki érti ugye?
function Object magic(String method, Object arg);
}
Hát persze, hiszen a varázslat, ugye, úgy működik, hogy megmondjuk mit szeretnénk varázsolni és mire hasson a varázslat. Innentől már mindenki a szeme elé képzelheti ,hogy mit lehet kihozni ebből... igen, végeláthatatlan ha a method ez akkor azt csinaljuk, ha a method amaz akkor amazt (az általam ismert rekorder 3-400 sor volt az érthetőség és áttekinthetőség jegyében). A lényeg, hogy nem kell új interfészt bevezetni, mert annyira általános interfészünk lett, amivel bármit leírhatunk. Ja, hogy senki nem érti? <voice src="bamba">Jaaaa...</voice> hát az kiafrászkarikát érdekel... működik. - Ja működik bazmeg.
Persze még szerencse hogy vannak nyelvek ahol ez nyelvi elem. És ugye a PHP programozók most mélyen magukba néznek, hogy mikor használták ki értelmetlen módon a __call-t vagy társait... Bár nyilván van amikor van értelme annak a konstrukciónak, és nem ront a kód érthetőségén, sőt kifejezetten megkönyíti az életünket. De nem sok ilyen van, és jellemzően ezeket se erre szokták használni, viszont cserébe a használata el szokott harapódzni, minél inkább megízleli szerencsétlen flótás az izét.:(