Author: Erich Gamma, Richarch Helma, Ralph Johnson and John Vlisside