Design patterns with Test driven development in Java