Java GOF Design pattern ideas