Evaluation of design pattern alternatives in Java