A while ago I stumbled over an interesting blog post that showed the evolution from traditional design to a design using dependency injection and IoC containers. As a great side effect it is also shown how dependency inject is a good design pattern for other aspects than testability. And that is the whole point with BDD and TDD; when letting the behavior (or tests) drive your development you will write "better code" auto-magically because many patterns considered good are also make the code more testable.