Pesma o antipattern-u kružnih referenci u Javi iliti šta će se desiti u sledećoj situaciji:

1
2
3
4
5
6
7
8
9
10
11
public class A { 
  public A() {
    B b = new B();
  }
}
 
public class B {
  public B() {
    A a = new A();
  }
}

Pevati uz “Dva dinara druže”.

Paketima našim smišljasmo imena
Broj klasa nam je rast’o svaki Božji dan
Ubedi me najzad, memory leak-a nema
Zajedno smo objekte gurali kroz WAN,
Gurali kroz WAN.

Sedeo sam tako, sam za našim stolom
Kad u konstruktoru videh da se, kružno zove new
Opet me kolega napravio volom
Prepunio mi je memoriju svu,
Memoriju svu.

Htedoh da zaurlam, strčah u debug
Po celom mi kodu pointeri kruže
Memory profiler na tri’es’ i dva bita
Rekao je “Četiri bajta druže”,
“Četiri bajta druže”.

Svaki novi “new”, četiri nova bajta
A ni call stack-u vidim nema kraja,
“Izvinite molim”, predložih mu ja
Singleton je izaš’o iz raja,
Izaš’o iz raja.