Ta otázka je správná. Ačkoliv to tu už částečně bylo řečeno, konkrétně využívám interface v případech: - když chci nejdříve navrhnout rozhraní komunikace mezi objekty a až potom objekty implementovat. Ve výsledku to člověka nutí trochu více přemýšlet a mě to pomáhá psát čistší kód s méně závislostmi - když chci mít možnost měnit implementaci - když chci mít možnost definovat, že třída podporuje nějaké rozšířené rozhraní a přitom její předek tuto funkci mít nemusí. Například v .NET frameworku rozhraní ICustomFormatter, které říká, že třída (ať už jakákoliv) podporuje rozšířené formátování do textového řetězce. Obecně by šlo každou třídu popsat i interfacem a s tím pak pracovat. Ale nedělá se to, protože pokud spolu některé třídy přímo souvisí a jsou navržené tak, aby pracovaly dohromady (byla mezi nimi přímá vazba), pak nemá smysl mezi nimi vytvářet abstrakci. Jen by kód zesložitilo a obvykle ničemu nepomohlo.
|