V Objektovom orientovanom programovani sa snazime aby triedy mali co najuzsie specifikovanu ulohu ktoru idu vykonavat. Dobry design je design ktory sa snazi skladat vysledny program z co najmensimi modulmi (tak aby to stale davalo zmysel).

Modul (kludne aj trieda, alebo balik tried), ktory robi len jednu ulohu sa lahsie chape, lahsie testuje ==> mensia sanca ze v nom bude bug.

Zaroven sa mensie triedy s jednym ucelom ovela lahsie nahradzuju v buducnosti inymi triedami ==> ready for change.

Preto bolo vhodne vytvorit samostatne implementacie pre obe interface.