Podajmy przykład oparty na systemie obliczającym wartość pożyczki:

Pozyczka(wartosc); Pozyczka(wartosc, oprocentowanie); Pozyczka(wartosc, oprocentowanie, czasSplaty); Pozyczka(wartosc, oprocentowanie, czasSplaty, ryzyko); Pozyczka(wartość, oprocentowanie, czasSplaty, ryzyko, status); Początkowo w kodzie programu istniał jeden konstruktor o nazwie „Pozyczka” z jednym parametrem (wartosc). W miarę dodawania nowych funkcjonalności pojawiała się potrzeba tworzenia konstruktorów „Pozyczka” o większej liczbie parametrów. W ten sposób powstało pięć metod o tej samej nazwie, lecz różnym działaniu. Taki kod zazwyczaj wymaga refaktoryzacji, gdyż nazwa metody powinna jednoznacznie wskazywać, za jaką funkcjonalność systemu metoda odpowiada. Przy dalszym rozwoju kodu tej klasy mogą pojawić się problemy z implementacją wynikające z niezrozumienia faktycznej roli konstruktora. Po refaktoryzacji kod może mieć postać: Pozyczka(wartosc, oprocentowanie, czasSplaty, ryzyko, status); ustalWartosc(wartosc); stworzPozyczke(wartosc, oprocentowanie); dajPozyczke(wartosc, oprocentowanie, czasSplaty); sprawdzPozyczke(wartosc, oprocentowanie, czasSplaty, ryzyko);