Wzorce Projektowe ang. Design Patterns, są to uporządkowane i sprawdzone w praktyce rozwiązania często spotykanych problemów programistycznych. Ich implementacja nie tylko rozwiązuje napotkany problem ale również ułatwia komunikację w zespole oraz szybsze zrozumienie kodu przez innych programistów.
W przeciwieństwie do klasycznej formy konstruktora klasy, Builder pozwala w konstruktorze na wprowadzenie dowolnej ilości argumentów, w dowolnej kolejności. Takie rozwiązanie sprawdzi się gdy klasa posiada dużą ilość pól i nie chcemy tworzyć dla niej dużej liczby konstruktorów.
Przykładową implementacją wzorca projektowego Builder jest wykorzystanie klasy wewnętrznej.

Klasa w której implementujemy Builder, posiada prywatne pola. W prywatnym konstruktorze klasy, jako argument przekazujemy obiekt klasy wewnętrznej. Klasa posiada również „gettery”.
Klasa wewnętrzna, na naszym diagramie KlasaBuilder jest klasą publiczną i statyczną. Klasa wewnętrzna posiada takie same pola jak klasa zewnętrzna oraz są one prywatne. Klasa wewnętrzna posiada również metody, do których jako argumenty przekazywane są konkretne wartości pól klasy. Metody te zwracają typ klasy wewnętrznej (KlasaBuilder), pozwala nam to łączyć („chainować”) w łańcuch, dowolnie dostępne metody w dowolnej kolejności. Powoduje to możliwość inicjalizacji pól w konstruktorze w zależności od naszych potrzeb. Po wywołaniu wybranych metod, wywołujemy metodę build(), która zwraca nam utworzony obiekt o typie klasy zewnętrznej.