design patterns - Learn Driven Development