👏 Preuzmi → Relearning Java Design Patterns PDF
S vremena na vreme čitaoci mi šalju poruku: „Erge, moj kod je loše napisan, šta da radim?"
Pisanje koda zaista je zanat — to mi programeri moramo priznati, jer ipak kucamo prstima! Ako to nije zanat, šta je onda (smeh).
Da ukratko analiziram razloge loše napisanog koda. Prvo, možda si tek početnik i napisao si malo koda — ako smo sveukupno napisali samo hiljadu-dve linija koda, ne možemo napisati naročito elegantan kod. Drugo, možda ne poznajemo obrasce dizajna (design patterns). Oni su tipična rešenja za uobičajene probleme u dizajnu softvera; poput unapred pripremljenih nacrta koji se mogu prilagoditi potrebama i primeniti na probleme dizajna koji se ponavljaju u kodu. Ako ne poznaješ obrasce dizajna, pri susretu s ovim problemima ostaješ bez rešenja.
Kratko rečeno, ko majstorski ovlada obrascima dizajna, piše elegantniji kod koji se ugodnije čita i ima jaču održivost i proširivost.
Do ovde sam uveren da svi već razumete važnost obrazaca dizajna! Ovde preporučujem jedan PDF o obrascima dizajna sa preko 5 miliona čitanja na celom webu, koji neprestano drži vrh GitHub Trending liste.
Dalje, preporučujem i jedan sajt: Refactoring Guru.

Adresa je sledeća:
Iako je u pitanju inostrani sajt, on je na čudesan način ostvario lokalizaciju na više jezika — za njega prosto moraš da se zagreješ. Prema rečima autora, ideja mu je bila da pomogne nama programerima da brzo savladamo obrasce dizajna; ali kada neko sajt dovede do ovolike predanosti, ne mogu a da mu ne aplaudiram!
Pogledajmo sadržaj obrazaca dizajna (slika ispod prikazuje samo deo kreacionih i strukturnih obrazaca; postoje i bihejvioralni obrasci):

Svaki obrazac ima odgovarajući članak bogato ilustrovan slikama; čita se kao slikovnica — živ, zanimljiv, ostavlja jak utisak i pri učenju nema ni trunke dosade. Pogledajmo deo sadržaja o obrascu Factory Method — kvalitet slika zaista je visok, mora mu se priznati!

Prateći primeri koda su takođe vrlo potpuni; pogledajmo Java verziju:
public class WindowsButton implements Button {
JPanel panel = new JPanel();
JFrame frame = new JFrame();
JButton button;
public void render() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello World!");
label.setOpaque(true);
label.setBackground(new Color(235, 233, 126));
label.setFont(new Font("Dialog", Font.BOLD, 44));
label.setHorizontalAlignment(SwingConstants.CENTER);
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.getContentPane().add(panel);
panel.add(label);
onClick();
panel.add(button);
frame.setSize(320, 200);
frame.setVisible(true);
onClick();
}
public void onClick() {
button = new JButton("Exit");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.setVisible(false);
System.exit(0);
}
});
}
}Naravno, primera koda ima ne samo za Java, već i za C#, C++, Python, Go i još nekoliko uobičajenih programskih jezika — ukupno 8 jezika.

Ovaj način učenja uz bogate ilustracije + primere koda znatno produbljuje usvajanje znanja kod nas programera. Koje sve reči pohvale preostaju? Ja, inače bogat znanjem, ostajem donekle bez reči. Ukratko, ako i vi želite da dobro savladate obrasce dizajna, krenite odmah!
Izneo sam i offline PDF verziju; evo jednog isečka sadržaja za pregled.

Mnoge ilustracije u njoj pozivaju se na sajt Refactoring Guru, ali autor je dodao i sopstvena razmišljanja i razumevanja, pa se čita pristupačnije. Prema rečima autora:
Drago mi je što si dobio ovu knjigu; ako je istrajiš do kraja i budeš vežbao po primerima iz nje, onda će u svetu programiranja biti još jedan programer koji piše dobar kod, a istovremeno će biti pripremljen i jedan budući arhitekta.
Zajedno postanimo vrhunski programeri!
