Больше, чем теория TDD - парадигма/практика. Просто вы должны написать свои тесты (модульные тесты), прежде чем писать свой код.
Основная проблема за это мнением, когда вы практикуете TDD вы автоматически вынуждены
- Определите единиц (За то, что вы пишете тесты) первым, прежде чем писать свой реальный код ,
- Сделайте единиц намного проще, чтобы сделать его проверяемым.
В конечном счете это две основные цели применения Design Patterns, то есть то, что блоки ?, как сделать их более простыми? Поэтому автоматически вам предлагается применять шаблоны проектирования до того, как вы напишете свой код (когда вы сначала пишете блок-тесты).
Лично я согласен, что вы можете взять оба параллельно. Действительно TDD - это просто практика. На практике вы можете улучшить. Шаблоны проектирования - это нечто относительно теоретическое. Вы можете попробовать применить их, когда будете заниматься TDD. :))