Pokud jsi precetl a pochopil GoF, umis dost.
Nejhorsi co muzes udelat, je snazit se puristicky cpat OOP prvky do kodu, jenom proto, ze je to OOP.
Slesky rozum.
To co chces je kod bez spaget, ktery dokaze precist i clovek co s danym jazykem primo nedela a zna zaklady C, co se da snadno testovat - takze rozsekat do pomerne malych self contained classes, zadne obri obludy. Boilerplate vubec nevadi, pokud zvysuje citelnost, stejne to generuje IDE.
Nejhorsi jsou krypticke zapisy, ktere nejaky idiot, hrdy, ze zna kazdou kravinu jazyka, pouzije.
Treba perl je v tom slavny, neco ve stylu $_->$@["nasr*at"] = 'a rozmazat';
Obecne kazdy nastroj ma smysl pouzit tam, kde smysl dava. Osobne jsem v Jave uz dloooouho nepouzil dedeni (pouze interfaces) ani treba anonymous classes.
Dale plati, use google, Luke. Hromadu veci uz nekdo neky resil a na stackoverflow je hromada velmi kvalitni inspirace.